如何在FFT后找到一个山谷

时间:2015-08-24 13:14:56

标签: matlab fft mathematical-optimization numerical-methods

在FFT(here is the input data and output images)之后,我需要找到两个峰之间的谷及其在x轴上的位置(见图1)。

因为我只对两个主峰和它们之间的山谷感兴趣,所以我可能只采用图1中显示的部分数据:

b_border = round(1500*length(fq)/fmax);
t_border = round(4000*length(fq)/fmax);

我尝试使用findpeaks但不幸的是有很多小山峰和山谷,所以我得到了错误的结果。请参见图2和图3。

以下是代码:

fy=fft(y);
L=length(y);
L2=round(L/2);
fa=abs(fy(1:L2));
fmax=Fs/2;
fq=((0:L2-1)/L2)*fmax;
figure;
plot(fq,fa);

b_border = round(1500*length(fq)/fmax);
t_border = round(4000*length(fq)/fmax);
plot(fq(b_border:t_border),fa(b_border:t_border));

什么是正确的解决方案?
我非常希望得到你的帮助,谢谢!

1 个答案:

答案 0 :(得分:0)

谢谢,我找到了解决方案:

rangeSize = 75;
maximums = [,];
for i=b_border:rangeSize:t_border
    [fr, ind] = max(fa(i:i+rangeSize-1));
    maximums = [maximums; fr ind];
end

[low_a, ind2] = min(maximums(:,1), [], 1);

此外,在找到最小可能应用某些过滤器进行平滑之前