DFT近似计算信号频谱专题研讨
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
DFT近似计算信号频谱专题研讨
一.目的
(1) 掌握利用DFT近似计算不同类型信号频谱的原理和方法,包括:用DFT对连续时间信号进行谱分析,用DFT对序列进行谱分析以及在利用DFT进行谱分析时,研究增加序列长度(补零)对计算结果的影响。
(2) 理解利用DFT进行谱分析的误差产生的原因及减小误差的方法。
(3) 培养学生自主学习能力,体现发现问题、分析问题和解决问题的能力。
二.报告内容
1.用DFT对连续时间信号进行谱分析
所谓信号的谱分析,就是时频域转换,变成数学知识,就是对信号进行傅立叶变换(FT),连续信号与系统的傅立叶变换不便于用计算机进行计算。而在Matlab中的绘图操作,是通过将一些离散的点连接而成。求连续信号的频谱,应用的是离散傅立叶变换(DFT)。
由傅立叶变换理论知道,若信号持续时间有限长,则其频谱无限宽;若信号频谱有限宽,则其持续时间无限长。因此要对其进行谱分析就必须在时域采样无穷多个点,这又显然不满足DFT变换的要求。因此必须截取一个时间段内的连续时间信号来进行谱分析。
例:正弦信号x(n)=sin(2*pi*n1/k),做它的8点采样,并求连续频谱。
程序如下:
k=8;
n1=[0:1:7];
xn1=sin(2*pi*n1/k); %抽样信号
subplot(2,2,1);stem(n1,xn1,’.’);
xlabel(‘t/T’);ylabel(‘x(n)’); %坐标名
xk1=fft(xn1);xk1=abs(xk1);
subplot(2,2,2);stem(n1,xk1);
xlabel(‘k’);ylabel(‘x(k)’);
由matlab得到的仿真图如下:
2.用DFT 对序列进行谱分析
设x(n)=8R (n),计算)(
j e X 在[0,2π]上的32点等间隔采样,并绘制幅频和相频特性图。
程序如下: R=8;%矩形脉冲序列长度为8
N=32;% 32点等间隔采样
xn = boxcar(R);
k = 0:N-1;
w = 2*pi/N.*k;
Xk = fft(xn,N);
%figure(2)
subplot(211)
stem(w,abs(Xk))
xlabel('w/rad'),ylabel('|X(jw)|')
subplot(212)
stem(w,180.*angle(Xk)/pi)
xlabel('w/rad'),ylabel('¡Ï(X(jw))')
由matlab 得到的仿真图如下:
3.在利用DFT进行谱分析时,研究增加序列长度(补零)对计算结果的影响。
n=0:127;
f=0.1;
y1=sin(2*pi*f*n);%信号,正弦叠加矩形
y1(1:16)=y1(1:16)+1;
figure;
plot(abs(fft(y1)));%绘制y1的fft谱幅度
y2s=y1(1:32);%对信号进行截短
figure;
fy2s=abs(fft(y2s));%绘制y1截断后没有补零的fft谱幅度
stem(fy2s);
y2=[y2s zeros(1,128-32)];%然后补零使y1和y2一样长
figure;%打开一个绘图窗口
plot(abs(fft(y1)));%绘制y1的fft谱幅度,谱线较多,直接画包络
hold on;%在同一个figure中继续绘图
plot(abs(fft(y2)),'r');%绘制y2的fft谱幅度(红色),谱线较多,直接画包络
stem(1:4:128,fy2s,'k');%绘制y2s的fft幅度谱hold off;
由matlab得到的仿真图如下:
图1(原信号的谱,因为点数较多,绘制的是包络)
图2(截短信号的谱)
图3(比较原信号【蓝】,截短信号【黑】,补零信号【红】三者谱的关系,补零信号的谱由于点数较多,绘制的是包络)
首先生成了一个长度为128点的信号,绘制了它的DFT谱,然后将该信号截短,求其DFT谱,然后对截短的信号补零,使其长度为128点再求DFT谱,并将原信号的谱与补零信号的谱进行比较。
从图三中可以发现,红色的补零信号的谱,仅仅是对黑色的截短信号的谱的插值,也就是说补零信号的谱,是通过截短信号的谱进行了推测(插值算法)得来的,它并不能反映原信号的谱(因为原信号在截短的过程中部分信息丢失了,而补零并没有将这些丢失的信息找回来),所以虽然补零信号的谱线间隔变小了,但是除了从截短信号的谱中取出来的32根谱线以外,其余的96根谱线都是无效的。去掉这些无效的谱线,采样频率不变,有效的谱线数不变,所以其物理频率分辨率自然没有改变。
在时域补零起到了对频谱的插值作用,考虑到傅立叶变换的对称性,考虑到变换与反变换的表达式除了系数和符号的差别外并没有根本的不同,推断出这样一个结果:在频域补零也会造成时域的插值(当然在频域进行操作一定要注意谱的对称性,否则反变换回来得到的将是一个复信号)。程序如下:
f=0.1;
n=0:31;
y1=sin(2*pi*f*n);%产生正弦信号%y1的fft谱
f1=fft(y1);
f2=[f1(1:end/2+1) zeros(1,31) f1(end/2+1:end)];%给y1的谱补零
stem(abs(f2));
y2=ifft(f2);%对补零后的谱作反变换
figure;%打开绘图窗口
hold on;%绘制多幅图形
stem(y2);%绘制y2
stem(1:2:64,y1/2,'r');%绘制原信号(除以2以比较插值效果)
hold off;
4.理解利用DFT进行谱分析的误差产生的原因及减小误差的方法
(1)频谱混叠
在对模拟信号[xa(t)]进行采样时,必须满足采样定理,即采样频率[fs≥2fc],而时域有限的信号不可能是锐截止的,并且信号中不可避免地有一些高频杂散信号,因此在采样之前,要对模拟信号进行滤波,滤除高频杂散信号。随着采样频率的减小,混叠现象加大。
因此,要减小混叠,必须满足乃奎斯特采样定理,并且在采样前进行预滤波,滤除高于折叠频率[fs2]的频率成分,一般取采样频率[6][fs≥(3~5)fc。]
(2)截断效应
对无限长的模拟信号,用DFT进行谱分析时,必须先进行截断,通过采样才能得到有限点的序列,这样必然产生误差。截断可以理解为加窗,即:
y(n)=x(n)w(n)
式中:[x(n)]为模拟信号经采样得到的时域离散信号;[w(n)]为窗函数序列。根据