2

行動認識の特徴である多次元時系列データがあります。3D ジョイント位置、クォータニオン値、平均、ジョイント間のユークリッド距離を表す 20 個の変数があります。k=4 で kmeans クラスタリングを適用しました。クラスタリングの後、共起するクラスタ ID を組み合わせて、それらに対応するデータ ポイントもそのクラスタ ID によってまとめられるようにしたいと考えています。たとえば、10 個のデータ サンプルの次のクラスター インデックスを考えると、

IDX = [1 1 2 1 3 3 3 2 2 4]'

データを次のようにします。ここで、A、B、C、D、E、F、G、H は 3 つの特徴変数で、(AC) は特定の関節の (x、y、z) 座標を表し、D はユークリッドを表します。ヘッドに対するジョイントの距離(EH)は、ジョイントのクォータニオン値です。数値を要素とします。Data =

A   B   C   D    E   F    G   H
a1  b1  c1  d1   e1  f1   g1  h1
a2  b2  c2  d2   e2  f2   g2  h2
a3  b3  c3  d3   e3  f3   g3  h3
a4  b4  c4  d4   e4  f4   g4  h4
a5  b5  c5  d5   e5  f5   g5  h5
a6  b6  c6  d6   e6  f6   g6  h6
a7  b7  c7  d7   e7  f7   g7  h7
a8  b8  c8  d8   e8  f8   g8  h8
a9  b9  c9  d9   e9  f9   g9  h9
a10 b10 c10 d10  e10 f10  g10 h10

次に、結果は削減されたベクトル (データの圧縮バージョン) になり、データの最初の 2 行はクラスター ID 1 で表され、データの 3 行目はクラスター ID 2 で表され、4 行目 = 1、5 行目、6 行目、7 行目です。行が結合され、3、8、9 行目が 2、最後の行が 4 で表されます。したがって、最終的なデータ表現は、次元と長さも縮小された圧縮文字列になりますCompressed_Data = [1 2 1 3 2 4]'。このマッピングと変換を行うにはどうすればよいですか? 前もって感謝します。

4

1 に答える 1

1

インデックス配列 を圧縮するにIDXは、次の方法を試すことができます。

a = IDX; % for clarity, use a different variable, a
a(find(diff(IDX)==0)+1) = []; % remove repeating elements
Compressed_Data = a;

あるいは、

Compressed_Data = IDX([1; find(diff(IDX(:))~=0)+1])

これがあなたが探しているものでない場合はお知らせください。

于 2013-11-01T03:40:54.640 に答える