我有一个带有几个峰值的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;
}
}
但这是一种非常强力的做法。有没有更好的方法来做到这一点?任何内置函数也许?
答案 0 :(得分:1)
让我们说找到前5个峰值,最小高度为0.5,彼此距离为10个点,
[pks, locs] = findpeaks(FFT, 'NPEAKS', 3, 'MINPEAKHEIGHT', 0.5, 'MINPEAKDISTANCE', 10);
然后pks
是你的y
而locs
是你的x
坐标高峰。
希望有所帮助
答案 1 :(得分:0)
你的伪代码可以简化为:
FFT(1:50:250)
但我认为findpeaks
会更健壮