2013-04-04 57 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