让Matlab在FFT图中找到5个谐波的峰值

时间:2014-03-14 09:41:35

标签: matlab plot fft

我有一个带有几个峰值的FFT图。我需要matlab才能读取前5个峰的峰值(我知道峰位于50的倍数)。

这是我想出的伪代码:

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;
    }
}

但这是一种非常强力的做法。有没有更好的方法来做到这一点?任何内置函数也许?

2 个答案:

答案 0 :(得分:1)

让我们说找到前5个峰值,最小高度为0.5,彼此距离为10个点,

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

然后pks是你的ylocs是你的x坐标高峰。

希望有所帮助

答案 1 :(得分:0)

你的伪代码可以简化为:

FFT(1:50:250)

但我认为findpeaks会更健壮