我有一个向量,我想根据向量中的值的滚动平均值进行分组。如果值大于平均值,则将它们放入组1中,如果它们少于它们,则放入组2中。将分组应用到大于平均值的值
可以使用什么函数来给出组中的每个值,以便根据是或不是它的价值大于目前的平均水平。
我有一个向量,我想根据向量中的值的滚动平均值进行分组。如果值大于平均值,则将它们放入组1中,如果它们少于它们,则放入组2中。将分组应用到大于平均值的值
可以使用什么函数来给出组中的每个值,以便根据是或不是它的价值大于目前的平均水平。
我不认为有一个函数来分配“标签”的数组项。
假设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)
如果你想有一个滚动平均值,虽然,它取决于你如何计算,但相同的基本方法应该足够了。
没有简单的功能可以做到这一点。你需要这样的事情:
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