2016-03-15 26 views
-1

所以我有這個,它實際上做一個平均的「手動」方式變換「for」循環到八度/ Matlab的平均

function DESV=cada(arch,col); 
a=load(arch); 
primera=a(:,col); 

n=length(primera); 
M=zeros(n,1); 
for i=1:n-4 
    for r=i:i+4 
    M(i)=M(i)+primera(r); 
    end 
end 
M=M/5; 
M 

它花式的是,它會計算每5個步驟(我減去4的循環,因爲歸檔沒有完全是長度的5的倍數) 現在,老師告訴我,我必須在那裏寫一個平均值,而不是將其計算爲總和。 我不知道如何做到這一點,我試過,但我得到了不同的結果,我知道如何使用mean,但我不知道如何使它每5步計算一次,循環的結構是什麼。 在此先感謝

+0

這看起來只是一個移動平均濾波器。也許使用Google可以幫助你? – Suever

+0

「我減去了4,因爲歸檔沒有5的整數長度」 - 這不是減去4的原因。這是因爲你的4個元素的移動片段否則會超出列表。你寫了那個代碼嗎?你到底懂不懂呢? – Daniel

+0

是的,它只是響起了你所做的一切。 – Remixex

回答

0

未經測試:

function DESV=cada(arch,col); 
a=load(arch); 
primera=a(:,col); 

n=length(primera); 
M=zeros(n,1); 
for i=1:n 
    M(i)=mean(primera(i:max(i+4,n))); 
end 

DESV=M 
+1

未經測試是不是這樣一個大問題,但它也是無法解釋... –

+0

由於時間原因沒有解釋。隨意編輯和增強這個答案404。 – BerndGit