对于单频信号出现频谱泄露的解决办法——整周期采样

什么是整周期采样?

假设正弦信号的频率f0是△f的整数倍,即有f0=a△f,a是整数,满足这一条件采得的数据称为整周期采样。把这一条件再进一步展开,可得

f0/(fs/N)=a

这说明在已知采样频率fs、数据长度N及正弦信号频率f0下,当满足上式时,该数据对f0信号是整周期采样。

在信号处理中,经常会遇到经窗函数截断以后,有的没有发生泄漏,但有的发生了泄漏。

案例、有一个余弦信号,信号频率30Hz,信号为x(t)=cos(2π×30t),采样频率fs=128Hz,样本长度分别取N=128和N=100,在FFT后作谱图并比较谱图中的差别。程序分两部分,程序如下:

clear all; clc; close all;

fs=128;                         % 采样频率
% 第一部分
N=128;                          % 信号长度
t=(0:N-1)/fs;                   % 时间序列
y=cos(2*pi*30*t);               % 余弦信号
Y=fft(y,N);                     % FFT
freq=(0:N/2)*fs/N;              % 按式(2-2-7)设置频率刻度
n2=1:N/2+1;                     % 计算正频率的索引号
Y_abs=abs(Y(n2))*2/N;           % 给出正频率部分的频谱幅值
% 作图
subplot 211; stem(freq,Y_abs,'k')
xlabel('频率(Hz)'); ylabel('幅值');
title('(a) Fs=128Hz, N=128')
axis([10 50 0 1.2]); 

% 第二部分
N1=100;                           % 信号长度
t1=(0:N1-1)/fs;                   % 时间序列
y1=cos(2*pi*30*t1);               % 余弦信号
Y1=fft(y1,N1);                    % FFT
freq1=(0:N1/2)*fs/N1;             % 按式(2-2-7)设置频率刻度
n2=1:N1/2+1;                      % 计算正频率的索引号
Y_abs1=abs(Y1(n2))*2/N1;          % 给出正频率部分的频谱幅值
% 作图
subplot 212; stem(freq1,Y_abs1,'k')
xlabel('频率(Hz)'); ylabel('幅值');
title('(b) Fs=128Hz, N=100')
axis([10 50 0 1.2]); hold on
line([30 30],[0 1],'color',[.6 .6 .6],'linestyle','--');
plot(30,1,'ko','linewidth',5)
set(gcf,'color','w');

运行结果如下: 

在程序两部分中用相同的信号,中心频率f0=30,采样频率fs=128,差别仅是FFT的长。在N=128的谱图上只在30Hz处有一条谱线,其他频点的幅值都为0;而在N=100的谱图上有明显的泄漏现象,谱线用黑实线表示。最大两根谱线在30Hz两侧,图中用虚线和黑圈点表示了30Hz的频率点。为什么当N=128时FFT后没有泄漏,而当N=100时FFT后就有泄漏?

分析:可知在加矩形窗之后,单一频率信号的频谱图表达式为

已不是一个单一的δ函数,而是有泄漏的存在。设信号是频率为f0,当取信号为整周期采样时,信号的频率f0=a△f,a=k,f0将与某一条谱线相重合,如同程序第一部分表示的那样,即第k条谱线频率为f0。整周期采样后得到的幅值谱图如图(a)和下图所示。


 

在整周期采样后得到的XT(w),一样存在着泄漏的可能性,但由于信号频率f0与第k条谱线重合,k±i(i为整数值)的任意谱线正好落在XT(w)的零点上,所以在谱图中就没有显示泄漏现象。
当取信号为非整周期采样时,信号的频率f0不与FFT后某一条谱线重合,而是像案例的程序第二部分表示的那样,f0落在两条谱线的中间,例如落在第k和k+1条谱线之间,其中第条谱线是局部极大值,如图(b)和下图所示。

在非整周期采样时得到的XT(w),一样存在着泄漏的可能性,由于信号频率f0在两条谱线之间,第k条谱线虽是局部的最大值,但不与f0相重合,则k±i(i为整数值)的任意谱线都是XT(w)函数上的非零值,所以在谱图中存在泄漏现象。

为了防止泄漏,对于单频信号可以调整采样频率使之构成整周期采样(例如在电力监测设备中,有的会用锁相技术跟踪信号频率以调整采样频率),但大多数实际信号处理中的信号不是单频(或单频+谐波),而是多频率的,所以泄漏是难免的。在有泄漏的情形中只能想方设法减小泄漏的影响,比如利用窗函数。虽然上述已在截断的讨论中加了矩形窗函数,但矩形窗函数的泄漏是最大的,还有其他窗函数能更好地减少泄漏。

参考文献:MATLAB数字信号处理85个实用案例精讲——入门到进阶;宋知用(编著)

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值