FFT中的补零问题

在FFT时经常会对输入序列补零,最常见的是补零后把N设置为N=2^k(k是一个正整数)。由于采集到的实验数据序列长度M往往不是2的整数次幂,因此可通过补零使FFT时长度为N=2^k。
DFT和Z变换的关系式为:

DFT是在Z平面单位圆上均匀分布的N个点,相隔为2π/N,参见图下图。

数据序列补零后DFT在Z平面上的取值如下图所示


 

在Z平面的单位圆上黑色实心圆点是X(k)的值,即在x(n)没有补零时DFT后的值;而图中还有空心圆点,这是X1(k)新增加的值,即在补零后为DFT增加的值。从图中可看出这些新增的值是内插在X(k)值之间。所以补零是对原有X(k)进行插值。

案例、信号x(n)由两个余弦分量组成,它们的频率为f1=30Hz和f2=65.5Hz,采样频率fs=200Hz,数据长度N=200。用200和400进行FFT,比较它们的结果。

数据长度N=200,当用L=400点进行FFT时,相当于在x(n)的200个数据样点后补了200个零值。程序如下:

clear all; clc; close all;

fs=200;                            % 采样频率
f1=30; f2=65.5;                    % 两信号频率
N=200;                             % 信号长度
n=1:N;                             % 样点索引
t=(n-1)/fs;                        % 时间刻度
x=cos(2*pi*f1*t)+cos(2*pi*f2*t);   % 信号

X1=fft(x);                         % 按N点进行FFT
freq1=(0:N/2)*fs/N;                % N点时正频率刻度
X1_abs=abs(X1(1:N/2+1))*2/N;       % 信号幅值

L=2*N;                             % 补零后FFT长度
X2=fft(x,L);                       % 按L长进行FFT
freq2=(0:L/2)*fs/L;                % L点时频率刻度
X2_abs=abs(X2(1:L/2+1))*2/N;       % 信号幅值
% 作图
subplot 211; plot(freq1,X1_abs,'k'); 
grid; ylim([0 1.2]);
xlabel('频率/Hz'); ylabel('幅值');
title('(a) 补零前FFT谱图')
subplot 212; plot(freq2,X2_abs,'k');
grid; ylim([0 1.2]);
xlabel('频率/Hz'); ylabel('幅值');
title('(b) 补零后FFT谱图')
set(gcf,'color','w');

运行结果如下:

运行程序后得信号x(n)在补零前、后的频谱图比较,如上图所示。
在图(a)中补零之前,谱分析中对f2信号是模糊的,由于泄漏,频带被拓宽了;而补零以后在图(b)中可以看到,在65.5Hz处有一个峰值。这是因为补零以后能改善栅栏效应,使原先不清晰的谱线显现了。

同时应注意到频率刻度和计算幅值的变化。在中补零之前,计算频率刻度freq=(0:N/2)*fs/N,并计算信号的幅值Am=abs(X*2/N),其中N是信号的长度,也是FFT的点数。但补零至L长后,FFT的点数也是L,计算频率刻度freq=(0:L/2)*fs/L,而计算信号的幅值还是Am=abs(X*2/N),虽然数据长度在补零后增长到L,但数据的有效长度还是N,且计算幅值是要以有效长度来计算的。

此外还可以看到,在图(a)中f1只是一条谱线,而在图(b)中f1除了一个峰值外在它的周围还有一些波纹振荡,这是泄漏造成的。当一个正弦信号整周期采样后在离散时域将无限延伸,相当于变为无限长的连续信号。但是在本例中N=200时是整周期采样的正弦信号,当N=400时由于补零信号已不是整周期采样的正弦信号,即使它将无限延伸也不会与无限长连续正弦信号相当,所以在截断以后一样会产生泄漏。

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值