我有一個向量,我想根據向量中的值的滾動平均值進行分組。如果值大於平均值,則將它們放入組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