在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));
什么是正确的解决方案?
我非常希望得到你的帮助,谢谢!
答案 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);
此外,在找到最小可能应用某些过滤器进行平滑之前