FFT曲线下的面积

15次浏览(最近30天)
纳斯林akt
纳斯林akt 2020年4月3日
评论道: 明星黾 2020年4月5日
我需要计算在FFT曲线中基频和一些谐波的曲线下的面积。我已经附加了FFT曲线。
对于FFT我使用以下代码:
Fs = 125;
L =长度((1250000:2500000));
n = pow2 (nextpow2 (L));
f = f * (0:1 / n: 1 - (1 / n));
df = log10 (abs (fft((1250000:2500000)。*汉宁(L), n)));
我需要计算一定带宽下曲线下的面积。例如,基频是1.5 MHz,我需要1.4 MHz和1.6 MHz之间的区域。我尝试使用cumtrapz函数使用以下代码:
Int = cumtrapz (f, df);
Intv = @(a,b) max(Int(f<=b)) - min(Int(f>=a));
SegmentArea1 = Intv(1.5 -。1、1.5 + 1。)
SegmentArea2 = Intv(3 -。1、3 + 1。)
但是它对SegmentArea1和SegmentArea2给出了相同的值。我也尝试使用trapz使用:
trapz (df(找到(abs (f - 1.4) < 0.0001):找(abs (f - 1.6) < 0.0001)))
但我得到了一个负值。
我使用的函数是正确的还是做错了什么?还有别的办法吗?

答案(1)

明星黾
明星黾 2020年4月3日
只计算“正频率”的一半的面积 fft 输出,而不是整个输出。如果数据都是正的(例如, fft ),负数通常是由于自变量(频率在一个 fft )从奈奎斯特频率到 0 ,而不是从 0 到奈奎斯特频率。
10评论
明星黾
明星黾 2020年4月5日
我的荣幸。
我怀疑是否有必要做基线修正 fft 输出。如果你想移除dc偏移量( 0 从原始时域信号(为了更清楚地看到其他峰)中减去 的意思是 从信号中提取信号 之前 fft
这取决于 fft 输出时, 去趋势 功能可能是最好的选择。

登录评论。

社区寻宝

在MATLAB中心找到宝藏,并发现社区如何可以帮助你!

开始狩猎!