2014-03-14 50 views
0

我有一個帶有幾個峯的FFT圖。我需要matlab能夠讀取前5個峯值的峯值(我知道峯值位於50的倍數)。讓Matlab在FFT圖中找到5個諧波的峯值

這裏是我想出了僞碼:

i=0; 
j=0; 
array[5]; 

for(i:n_samples){ 
    if(FFT(i)rem50==0){ // FFT is a variable that has fft 
     array[j]=FFT[i]; 
    } 

    i++; 
    J++; 

    if(j>5){ 
     break; 
    } 
} 

但是,這是這樣做的一個非常強力的方式。有沒有更好的方法來做到這一點?任何內置函數也許?

+1

你試過用'findpeaks'嗎? – Dan

回答

1

比方說,用0.5的最低高度,並與10個點的距離在發現第5個峯彼此,

[pks, locs] = findpeaks(FFT, 'NPEAKS', 3, 'MINPEAKHEIGHT', 0.5, 'MINPEAKDISTANCE', 10); 

然後pks是你ylocs是你的x coordenate從你的山峯。

希望它有幫助

0

你的僞代碼可以簡化爲:

FFT(1:50:250) 

,但我認爲findpeaks將更爲強勁