数字信号处理实验2离散时间傅立叶变换
- 格式:docx
- 大小:114.68 KB
- 文档页数:7
信号处理实验实验二:离散时间傅立叶变换
一、实验题目:离散时间傅里叶变换
二、 实验原理
经由正、逆离散时间傅里叶变换表达的傅里叶表示式是信号分析的一个关键部分,下面是分析方程与综合方程。
()[]jw
jwn n X e x n e ∞-=-∞=∑
1[]()2jw jwn x n X e e dw πππ
-=
⎰ 由以上公式知,离散时间傅里叶变换是w 的周期复值函数,周期是2π, 并且周期常选为【-π, π】.对离散时间傅里叶变换有两个问题:
(1) DTFT 的定义对无限长信号是有效的。
(2) DTFT 是连续变量的w 函数。
第二个问题是频率抽样问题。
Matlab 擅长在有线网格点上计算DTFT 。
通常选择足够多的频率以使绘出的图平滑,逼近真实的DTFT 。
对计算有利的最好选择是在(-π,π)区间上一组均匀的隔开的频率,或者共轭对称变换选择【0,π】,采用上述抽样方法,DTFT 式变为
X (e jw )=X(e j2πk/N )=∑e
−j(2πk/N)n L−1n=0,k=0,1,……N-1 在对DTFT 进行抽样时,并不要求N=L ,尽管通常由DFT 进行计算时,如果N=L 计算很方便。
通常,不可能计算一个无限长想信号的DTFT 。
但有一个重要的类型,其计算式容易的。
这一类型的信号就是指数信号,其DTFT 是e -jw 有理函数。
H (e jw )=B(e jw )A(e jw )=∑b l e
−jwl Q l=0∑a k P k=0e −jwk
指数信号h[n]=a n u[n]是这类信号的一员,但是对它不能使用前面的dtft 函数来处理。
另一方面,很容易推导出它的dtft 的表达式:
若|a|<1,有 h[n]=a n u[n] H(e jw )=∑a n u[n]e −jwn ∞n=0=1
1−ae −jw 三、 实验内容
(1)脉冲信号的DTFT
设矩形脉冲r[n]由下式定义
r[n]={1 0≤n ≤L 0 其他
a .证明r[n]的dtft 可有下面的数学表达式得出
R(e jw )=sin (12wL)sin (12w)e −jw(L−1)/2 该变换的第一项具有与dtft 相关的特殊形式,称为混叠sinc 函数:
asinc(w,L)= 1sin()21sin()2
wL w
b.使用dtft函数计算12点脉冲信号的dtft。
绘出在区间-pi≤w≤pi上对w 的dtft。
把实部和虚部分开绘出,但要注意这些图不是很有用。
另绘出dtft的幅度。
选择频率样本的数量是脉冲长度的5~10倍,以使绘出的图看上去平滑。
程序:
首先定义一个dtft函数:
function[H,W]=dtft(h,N)
N=fix(N);
L=length(N);
h=h(:);
if(N<L)
error('DTFT:#data samples cannot exceed # freq samples') end
W=(2*pi/N)*[0:(N-1)]';
mid=ceil(N/2)+1;
W(mid:N)=W(mid:N)-2*pi;
W=fftshift(W);
H=fftshift(fft(h,N));
计算12点脉冲的dtft:
format compact, subplot(111)
xn=ones(12,1);
[X,W]=dtft(xn,120);
subplot(211),plot(W,real(X));
grid,title('DTFT的实部')
xlabel('w'),ylabel('Re')
subplot(212),plot(W,imag(X));grid
xlabel('w'),ylabel('Im')
title('DTFT的虚部')
绘出在区间-pi≤w≤pi上对w的dtft(实部和虚部分开绘出)
dtft的幅度
format compact
xn=ones(12,1);
[X,W]=dtft(xn,120);
plot(W,abs(X));
grid,title('DTFT的幅度')
xlabel('w'),ylabel('abs')
c.注意asinc函数零点的位置是规则分布的。
对奇数长脉冲,比如L=15的脉冲重复进行dtft计算并绘出幅度。
程序:
format compact
xn=ones(15,1);
[X,W]=dtft(xn,150);
plot(W,abs(X));
grid,title('DTFT的幅度')
xlabel('w'),ylabel('abs')
d.对asinc函数零点的间距与asin函数的直流值,确定出通用规则。
由图可知,asinc函数零点的间距一定。
(2)asinc的m文件
编写一个matlab文件如asic(w,L),之间从式中计算在频格上的asinc (w,L),该函数有两个输入:L和W,函数必须检查被0除的情形。
直接计算混叠sinc函数得到脉冲信号DTFT绘出幅度,保存该图以便与dtft 得到的结果比较。
程序:
首先定义asinc函数
function q=asinc(w,L)
if w==0
q=L; %检查被零除的情形
else q=sin(w*L/2)./sin(w/2);
end
运用混叠函数asinc计算12点脉冲信号的DTFT
L=12;
N=120;
xn=ones(L,1); %这两行主要是为了
[X,W]=dtft(xn,N); %得到和第1小题b中W相同的自变量
w=W; %为示区别,本题中自变量用w表示
Y=asinc(w,L).*exp(-j.*w*(L-1)/2) %运用公式进行计算
plot(w,abs(Y));
grid,title('DTFT的幅度')
xlabel('w'),ylabel('abs')
运用混叠函数asinc计算15点脉冲信号的DTFT
L=15;
N=150;
xn=ones(L,1); %这两行主要是为了
[X,W]=dtft(xn,N);%得到和第1小题b中W相同的自变量
w=W; %为示区别,本题中自变量用w表示
Y=asinc(w,L).*exp(-j.*w*(L-1)/2)
plot(w,abs(Y));
grid,title('DTFT的幅度')
xlabel('w'),ylabel('abs')
结果分析:将上述两幅图分别与第1小题中的b,c问中用dtft 函数所绘图形进行比较,可知分别对应完全相同。
所以,dtft函数定义正确。