Prashant之前回答得很好,但我想做一个简单的修改:
fl = filterLength;
A = yourVector (where mod(A,fl)==0)
sum(reshape(A,fl,[]),1).'/fl;
有一个",1"使得该语句在fl==1(原始值)时仍然运行。
我是通过以下方式在for循环中运行它时发现的:
... read A ...
hold on;
averageFactors = [1 3 10 30 100 300 1000];
colors = hsv(length(averageFactors));
clear legendTxt;
for i=1:length(averageFactors)
clear Atrunc;
clear ttrunc;
clear B;
fl = averageFactors(i);
Atrunc = A(1:L-mod(L,fl),:);
ttrunc = t(1:L-mod(L,fl),:);
B = sum(reshape(Atrunc,fl,[]),1).'/fl;
tB = sum(reshape(ttrunc,fl,[]),1).'/fl;
length(B)
plot(tB,B,'color',colors(i,:) )
endfor
squeeze(sum(reshape(a,size(a,2), 3,[])))
- bla