matlab窗函数的频谱_如何理解频谱泄露?

f49afd2539ec59a4bfdc235e37d3b2ac.png

这只是我个人的理解,错误之处还请指正。

在我《如何理解DFT》的文章中说到DFT和DTFT。这里就会有一个问题:

如果原始信号中有频率成分处于两个基本函数的频率之间,会怎么样呢?Fig.1(a)解释了答案,原始信号包含两路不同频率的正弦波,一路频率与基本函数匹配,一路频率不匹配。前者用一个点就能表示峰值,而后者则会出现一个峰值伴随着两个尾巴的频谱,即发生了谱泄露(拖尾)。可以理解峰值被相邻的基本函数“分摊”了。怎么解决这个问题呢?答案就是加窗,Fig.1(b)展示了汉明窗以后的频谱表现,发现两路正弦波的峰值形状更相似了,拖尾减少了,但是峰值的宽度变大了,也就是说加窗是谱泄露(拖尾)和频率分辨率(峰值宽度)之间的平衡

3a8b7fe88e7b8865b6c7cd13f06b60c3.png
Fig.1 Example of using a window in spectral analysis

我们从另一个角度来解释图(a)的拖尾效应。

假设有一个频率为

倍采样率的无限长的离散正弦波,它的频谱将是一个冲激函数。当然,这个信号无论是时域还是频域都无法输入计算机,只是从理论层面分析。给时域正弦波加一个256点的矩形窗,则保留窗内的256点的值,其余点全部设为0,它还是一个无限长的信号。对它做DTFT,得到它的频谱如Fig.2所示。根据时域乘积对应频域卷积,时域的加窗在频域中的表现是冲激函数和窗的频谱卷积,即将窗信号的频谱移到冲激函数的位置(0.1)。

Fig.1(a)的就是Fig.2抽样的结果,如果抽样在波谷(信号频率与基本函数频率匹配),则可消除拖尾,如果抽样在波峰和波谷的某一点(信号频率在基本函数频率之间),则会形成各种形式的拖尾。

总结一下,现实中对信号片段做DFT,相当理论中对无限长的信号加窗,求DTFT,再抽样。也就是说,只要你求一个信号片段的DFT就会有泄露,泄露无法避免。

78bffdb50ebd583471fe64d540bb2c46.png
Fig.2. Detailed view of a spectral peak using rectangular window

bc61d10f5a44be40fb3e7439f500a9f2.png
Fig.3. Spectrum of sinusoidal

用matlab验证一下,对于一个频率为41.4的正弦波做128点FFT。

fs=128;

T=1;

N=fs*T;

t=(0:N-1)/fs;

a=20*sin(2*pi*41.4*t);

b=fft(a);

plot(abs(b)/N*2);axis([0,75,0,20]);

可以看到频率为41.4,幅值为20的正弦波的频谱的幅值并不是20,因为发生了泄露。

  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值