0

ベクトル内の値のローリング平均に基づいてグループ化したいベクトルがあります。値が平均よりも大きい場合はグループ 1 に配置し、小さい場合はグループ 2 に配置します。

その値が現在の平均より大きいかどうかに基づいて、私のベクトル内の各値にグループ番号を与えるために使用できる関数は何ですか?

4

2 に答える 2

0

配列エントリに「ラベル」を割り当てる機能はないと思います。

v が入力ベクトルであると仮定すると、簡単な方法は単純に次のようにすることです。

v(v>mean(v)) %Group 1
v(v<mean(v)) %Group 2

もちろん、それ以上のことをしたい場合は、次のことができます。

avg = mean(v);
flag = zeros(size(v));
for i=1:numel(v)
   if(v(i)>avg)
      flag(i) = 1;
   else
      flag(i) = 2;
   end
end

flag必要なグループ化が含まれます。vin groupの要素が必要な場合は、次の1ように簡単に使用できます。

v(flag==1)

ただし、ローリング平均が必要な場合は、計算方法によって異なりますが、同じ基本的な方法で十分です。

于 2013-04-04T06:25:41.370 に答える
0

それを行う単純な関数はありません。次のようなものが必要です。

N = length(vec);
[lo_group hi_group] = deal( NaN(ceil(N/2),1) );
[sum lo_ct hi_ct] = deal(0);
for i=1:N
   v = vec(i);
   sum = sum + v;
   avg = sum/i;
   if v>avg
      hi_ct = hi_ct + 1;
      hi_group(hi_ct) = v;
   else
      lo_ct = lo_ct + 1;
      lo_group(lo_ct) = v;
   end
end
于 2013-04-04T04:20:26.113 に答える