我有一个向量,我想根据向量中值的滚动平均值对其进行分组。如果值大于平均值,我将它们放在第 1 组中,如果它们小于平均值,则将它们放在第 2 组中。
根据其值是否大于当前平均值,可以使用什么函数为我的向量中的每个值赋予一个组编号。
我有一个向量,我想根据向量中值的滚动平均值对其进行分组。如果值大于平均值,我将它们放在第 1 组中,如果它们小于平均值,则将它们放在第 2 组中。
根据其值是否大于当前平均值,可以使用什么函数为我的向量中的每个值赋予一个组编号。
没有简单的函数可以做到这一点。你需要这样的东西:
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
我认为没有将“标签”分配给数组条目的功能。
假设 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
将包含您必要的分组。现在如果你想要v
in group的元素1
,你可以简单地使用:
v(flag==1)
如果你想要一个滚动平均值,这取决于你如何计算它,但相同的基本方法就足够了。