2013-04-04 38 views
0

我有一个向量,我想根据向量中的值的滚动平均值进行分组。如果值大于平均值,则将它们放入组1中,如果它们少于它们,则放入组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将包含您必要的分组。现在,如果你想要的v1的元素,你可以简单地使用:

v(flag==1) 

如果你想有一个滚动平均值,虽然,它取决于你如何计算,但相同的基本方法应该足够了。

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