用Matlab求FFT图中5次谐波的峰值
我有一个有几个峰值的FFT图。我需要matlab能够读取前5个峰值的峰值(我知道峰值位于50的倍数) 以下是我提出的伪代码:用Matlab求FFT图中5次谐波的峰值,matlab,plot,fft,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; }
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;
}
}
但这是一种非常野蛮的方式。有没有更好的办法?可能有任何内置函数?您的伪代码可以简化为:
FFT(1:50:250)
但我认为
findpeaks
会更稳健比如说,找到前5个峰,最小高度为0.5,彼此之间的距离为10点
[pks, locs] = findpeaks(FFT, 'NPEAKS', 3, 'MINPEAKHEIGHT', 0.5, 'MINPEAKDISTANCE', 10);
然后,pks
是您的y
,locs
是您的x
与您的峰值的协调
希望对您有所帮助您是否尝试过使用
findpeaks
?