我有一个向量,我想根据向量中值的滚动平均值进行分组。如果值大于平均值,我将它们放在第1组中,如果它们更小,则进入第2组。
根据其值是否大于当前平均值,可以使用什么函数为每个值赋予一个组号值。
答案 0 :(得分: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
答案 1 :(得分: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
将包含您必需的分组。现在,如果您想要组v
中1
的元素,则可以使用:
v(flag==1)
如果你想要滚动平均值,这取决于你如何计算它,但同样的基本方法就足够了。