《数字信号处理实验指导书(54页).doc》由会员分享,可在线阅读,更多相关《数字信号处理实验指导书(54页).doc(54页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、-数字信号处理实验指导书-第 51 页数字信号处理实验指导书安阳工学院电子信息与电气工程学院目 录实验一 离散时间信号的表示及运算1实验二 离散时间LTI系统的时域分析10实验三 z变换及离散时间LTI系统的z域分析 .17实验四 离散傅立叶变换及其快速算法 . . .29实验五 IIR数字滤波器的MATLAB实现.46实验六 FIR数字滤波器的MATLAB实现. .54附录 MATLAB主要命令函数表. .61实验一 离散时间信号的表示及运算一、实验目的1、学会运用MATLAB表示的常用离散时间信号;2、学会运用MATLAB实现离散时间信号的基本运算。二、实验条件装有MATLAB软件的PC机
2、三、 实验原理1、离散时间信号在MATLAB中的表示离散时间信号是指在离散时刻才有定义的信号,简称离散信号,或者序列。离散序列通常用来表示,自变量必须是整数。离散时间信号的波形绘制在MATLAB中一般用stem函数。stem函数的基本用法和plot函数一样,它绘制的波形图的每个样本点上有一个小圆圈,默认是空心的。如果要实心,需使用参数“fill”、“filled”,或者参数“.”。由于MATLAB中矩阵元素的个数有限,所以MATLAB只能表示一定时间范围内有限长度的序列;而对于无限序列,也只能在一定时间范围内表示出来。类似于连续时间信号,离散时间信号也有一些典型的离散时间信号。单位取样序列单位
3、取样序列,也称为单位冲激序列,定义为 (1-1)要注意,单位冲激序列不是单位冲激函数的简单离散抽样,它在n=0处是取确定的值1。在MATLAB中,冲激序列可以通过编写以下的impDT.m文件来实现,即function y=impDT(n)y=(n=0); %当参数为0时冲激为1,否则为0调用该函数时n必须为整数或整数向量。【实例1-1】 利用MATLAB的impDT函数绘出单位冲激序列的波形图。解:MATLAB源程序为n=-3:3;x=impDT(n);stem(n,x,fill),xlabel(n),grid ontitle(单位冲激序列)axis(-3 3 -0.1 1.1)图1-1 单位
4、冲激序列程序运行结果如图1-1所示。单位阶跃序列单位阶跃序列定义为 (1-2)在MATLAB中,冲激序列可以通过编写uDT.m文件来实现,即function y=uDT(n)y=n=0; %当参数为非负时输出1调用该函数时n也同样必须为整数或整数向量。【实例1-2】 利用MATLAB的uDT函数绘出单位阶跃序列的波形图。解:MATLAB源程序为n=-3:5;x=uDT(n);stem(n,x,fill),xlabel(n),grid ontitle(单位阶跃序列)axis(-3 5 -0.1 1.1)图1-2 单位阶跃序列程序运行结果如图1-2所示。矩形序列矩形序列定义为 (1-3)矩形序列有
5、一个重要的参数,就是序列宽度N。与之间的关系为因此,用MATLAB表示矩形序列可利用上面所讲的uDT函数。【实例1-3】 利用MATLAB命令绘出矩形序列的波形图。解:MATLAB源程序为n=-3:8;x=uDT(n)-uDT(n-5);stem(n,x,fill),xlabel(n),grid ontitle(矩形序列)axis(-3 8 -0.1 1.1)程序运行结果如图1-3所示。图1-3 矩形序列单边指数序列单边指数序列定义为 (1-4)【实例1-4】 试用MATLAB命令分别绘制单边指数序列、的波形图。解:MATLAB源程序为n=0:10;a1=1.2;a2=-1.2;a3=0.8;
6、a4=-0.8;x1=a1.n;x2=a2.n;x3=a3.n;x4=a4.n;subplot(221)stem(n,x1,fill),grid onxlabel(n),title(x(n)=1.2n)subplot(222)stem(n,x2,fill),grid onxlabel(n),title(x(n)=(-1.2)n)subplot(223)stem(n,x3,fill),grid onxlabel(n),title(x(n)=0.8n)subplot(224)stem(n,x4,fill),grid onxlabel(n),title(x(n)=(-0.8)n)图1-4 单边指数序
7、列单边指数序列的取值范围为。程序运行结果如图1-4所示。从图可知,当时,单边指数序列发散;当时,该序列收敛。当时,该序列均取正值;当时,序列在正负摆动。正弦序列正弦序列定义为 (1-5)其中,是正弦序列的数字域频率;为初相。与连续的正弦信号不同,正弦序列的自变量n必须为整数。可以证明,只有当为有理数时,正弦序列具有周期性。【实例1-5】 试用MATLAB命令绘制正弦序列的波形图。解:MATLAB源程序为n=0:39; x=sin(pi/6*n);stem(n,x,fill),xlabel(n),grid ontitle(正弦序列)axis(0,40,-1.5,1.5);程序运行结果如图1-5所
8、示。图1-5 正弦序列复指数序列复指数序列定义为 (1-6)当时,得到虚指数序列,式中是正弦序列的数字域频率。由欧拉公式知,复指数序列可进一步表示为 (1-7)与连续复指数信号一样,我们将复指数序列实部和虚部的波形分开讨论,得出如下结论:(1)当时,复指数序列的实部和虚部分别是按指数规律增长的正弦振荡序列;(2)当时,复指数序列的实部和虚部分别是按指数规律衰减的正弦振荡序列;(3)当时,复指数序列即为虚指数序列,其实部和虚部分别是等幅的正弦振荡序列。【实例1-6】 用MATLAB命令画出复指数序列的实部、虚部、模及相角随时间变化的曲线,并观察其时域特性。解:MATLAB源程序为n=0:30;A
9、=2;a=-1/10;b=pi/6;x=A*exp(a+i*b)*n);subplot(2,2,1)stem(n,real(x),fill),grid ontitle(实部),axis(0,30,-2,2),xlabel(n)subplot(2,2,2)stem(n,imag(x),fill),grid ontitle(虚部),axis(0,30,-2,2) ,xlabel(n)subplot(2,2,3)stem(n,abs(x),fill),grid ontitle(模),axis(0,30,0,2) ,xlabel(n)subplot(2,2,4)stem(n,angle(x),fill
10、),grid ontitle(相角),axis(0,30,-4,4) ,xlabel(n)图1-6 复指数序列程序运行后,产生如图1-6所示的波形。2、离散时间信号的基本运算 对离散时间序列实行基本运算可得到新的序列,这些基本运算主要包括加、减、乘、除、移位、反折等。两个序列的加减乘除是对应离散样点值的加减乘除,因此,可通过MATLAB的点乘和点除、序列移位和反折来实现,与连续时间信号处理方法基本一样。【实例1-7】 用MATLAB命令画出下列离散时间信号的波形图。(1);(2)(3);(4)解:设,MATLAB源程序为a=0.8;N=8;n=-12:12;x=a.n.*(uDT(n)-uDT
11、(n-N);n1=n;n2=n1-3;n3=n1+2;n4=-n1;subplot(411)stem(n1,x,fill),grid ontitle(x1(n),axis(-15 15 0 1)subplot(412)stem(n2,x,fill),grid ontitle(x2(n),axis(-15 15 0 1)subplot(413)stem(n3,x,fill),grid ontitle(x3(n),axis(-15 15 0 1)subplot(414)stem(n4,x,fill),grid ontitle(x4(n),axis(-15 15 0 1)图1-7 离散时间信号的基本
12、运算及波形图其波形如图1-7所示。四、实验内容1、试用MATLAB命令分别绘出下列各序列的波形图。(1) (2)(3) (4)2、试用MATLAB分别绘出下列各序列的波形图。(1) (2)(3) (4)实验二 离散时间LTI系统的时域分析一、实验目的1、学会运用MATLAB求解离散时间系统的零状态响应;2、学会运用MATLAB求解离散时间系统的单位取样响应;3、学会运用MATLAB求解离散时间系统的卷积和。二、实验条件装有MATLAB软件的PC机三、实验原理1、离散时间系统的响应离散时间LTI系统可用线性常系数差分方程来描述,即 (2-1)其中,(,1,N)和(,1,M)为实常数。MATLAB
13、中函数filter可对式(2-1)的差分方程在指定时间范围内的输入序列所产生的响应进行求解。函数filter的语句格式为y=filter(b,a,x)其中,x为输入的离散序列;y为输出的离散序列;y的长度与x的长度一样;b与a分别为差分方程右端与左端的系数向量。【实例2-1】 已知某LTI系统的差分方程为试用MATLAB命令绘出当激励信号为时,该系统的零状态响应。解:MATLAB源程序为a=3 -4 2;b=1 2;n=0:30;x=(1/2).n;y=filter(b,a,x);stem(n,y,fill),grid onxlabel(n),title(系统响应y(n)程序运行结果如图2-1
14、所示。图2-1 实例3-1系统的零状态响应2、离散时间系统的单位取样响应系统的单位取样响应定义为系统在激励下系统的零状态响应,用表示。MATLAB求解单位取样响应可利用函数filter,并将激励设为前面所定义的impDT函数。例如,求解实例2-1中系统的单位取样响应时,MATLAB源程序为a=3 -4 2;b=1 2;n=0:30;x=impDT(n);h=filter(b,a,x);stem(n,h,fill),grid onxlabel(n),title(系统单位取样响应h(n)程序运行结果如图2-2所示。图2-2 实例2-1的系统单位取样响应MATLAB另一种求单位取样响应的方法是利用控
15、制系统工具箱提供的函数impz来实现。impz函数的常用语句格式为impz(b,a,N)其中,参数N通常为正整数,代表计算单位取样响应的样值个数。【实例2-2】 已知某LTI系统的差分方程为利用MATLAB的impz函数绘出该系统的单位取样响应。解:MATLAB源程序为a=3 -4 2;b=1 2;n=0:30;impz(b,a,30),grid ontitle(系统单位取样响应h(n)程序运行结果如图2-3所示,比较图2-2和图2-3,不难发现结果相同。图2-3 系统单位取样响应3、离散时间信号的卷积和运算由于系统的零状态响应是激励与系统的单位取样响应的卷积,因此卷积运算在离散时间信号处理领
16、域被广泛应用。离散时间信号的卷积定义为 (2-2)可见,离散时间信号的卷积运算是求和运算,因而常称为“卷积和”。MATLAB求离散时间信号卷积和的命令为conv,其语句格式为y=conv(x,h)其中,x与h表示离散时间信号值的向量;y为卷积结果。用MATLAB进行卷积和运算时,无法实现无限的累加,只能计算时限信号的卷积。例如,利用MALAB的conv命令求两个长为4的矩形序列的卷积和,即,其结果应是长为7(4+4-1=7)的三角序列。用向量1 1 1 1表示矩形序列,MATLAB源程序为x1=1 1 1 1;x2=1 1 1 1;g=conv(x1,x2)g=1 2 3 4 3 2 1如果要
17、绘出图形来,则利用stem命令,即n=1:7;stem(n,g,fill),grid on,xlabel(n)程序运行结果如图13-4所示。图2-4 卷积结果图对于给定函数的卷积和,我们应计算卷积结果的起始点及其长度。两个时限序列的卷积和长度一般等于两个序列长度的和减1。【实例2-3】 已知某系统的单位取样响应为,试用MATLAB求当激励信号为时,系统的零状态响应。解:MATLAB中可通过卷积求解零状态响应,即。由题意可知,描述向量的长度至少为8,描述向量的长度至少为4,因此为了图形完整美观,我们将向量和向量加上一些附加的零值。MATLAB源程序为nx=-1:5; %x(n)向量显示范围(添加
18、了附加的零值)nh=-2:10; %h(n)向量显示范围(添加了附加的零值)x=uDT(nx)-uDT(nx-4);h=0.8.nh.*(uDT(nh)-uDT(nh-8);y=conv(x,h);ny1=nx(1)+nh(1); %卷积结果起始点%卷积结果长度为两序列长度之和减1,即0到(length(nx)+length(nh)-2)%因此卷积结果的时间范围是将上述长度加上起始点的偏移值ny=ny1+(0:(length(nx)+length(nh)-2);subplot(311)stem(nx,x,fill),grid onxlabel(n),title(x(n)axis(-4 16 0
19、 3)subplot(312)stem(nh,h,fill),grid onxlabel(n),title(h(n)axis(-4 16 0 3)subplot(313)stem(ny,y,fill),grid onxlabel(n),title(y(n)=x(n)*h(n)图2-5 利用卷积和法求解系统的零状态响应axis(-4 16 0 3)程序运行结果如图2-5所示。四、实验内容1、试用MATLAB命令求解以下离散时间系统的单位取样响应。(1)(2)2、已知某系统的单位取样响应为,试用MATLAB求当激励信号为时,系统的零状态响应。实验三 z变换及离散时间LTI系统的z变换一、实验目的1
20、、学会运用MATLAB求离散时间信号的z变换和z反变换;2、学会运用MATLAB分析离散时间系统的系统函数的零极点;3、学会运用MATLAB分析系统函数的零极点分布与其时域特性的关系;4、学会运用MATLAB进行离散时间系统的频率特性分析。二、实验条件装有MATLAB软件的PC机三、实验原理1、z正反变换序列的z变换定义为 (3-1)其中,符号表示取z变换,z是复变量。相应地,单边z变换定义为 (3-2)MATLAB符号数学工具箱提供了计算离散时间信号单边z变换的函数ztrans和z反变换函数iztrans,其语句格式分别为Z=ztrans(x)x=iztrans(z)上式中的x和Z分别为时域
21、表达式和z域表达式的符号表示,可通过sym函数来定义。【实例3-1】 试用ztrans函数求下列函数的z变换。(1); (2)。解:(1)z变换MATLAB源程序为x=sym(an*cos(pi*n);Z=ztrans(x);simplify(Z)ans=z/(z+a)(2)z变换MATLAB源程序为x=sym(2(n-1)-(-2)(n-1);Z=ztrans(x);simplify(Z)ans=z2/(z-2)/(z+2)【实例3-2】 试用iztrans函数求下列函数的z反变换。(1) (2)解:(1)z反变换MATLAB源程序为Z=sym(8*z-19)/(z2-5*z+6);x=iz
22、trans(Z);simplify(x)ans=-19/6*charfcn0(n)+5*3(n-1)+3*2(n-1)其中,charfcn0(n)是函数在MATLAB符号工具箱中的表示,反变换后的函数形式为(2)z反变换MATLAB源程序为Z=sym(z*(2*z2-11*z+12)/(z-1)/(z-2)3);x=iztrans(Z);simplify(x)ans=-3+3*2n-1/4*2n*n-1/4*2n*n2其函数形式为。如果信号的z域表示式是有理函数,进行z反变换的另一个方法是对进行部分分式展开,然后求各简单分式的z反变换。设的有理分式表示为 (3-3)MATLAB信号处理工具箱提
23、供了一个对进行部分分式展开的函数residuez,其语句格式为R,P,K=residuez(B,A)其中,B,A分别表示X(z)的分子与分母多项式的系数向量;R为部分分式的系数向量;P为极点向量;K为多项式的系数。若X(z)为有理真分式,则K为零。【实例3-3】 试用MATLAB命令对函数进行部分分式展开,并求出其z反变换。解:MATLAB源程序为B=18;A=18,3,-4,-1;R,P,K=residuez(B,A)R= 0.3600 0.2400 0.4000P= 0.5000 -0.3333 -0.3333K=从运行结果可知,表示系统有一个二重极点。所以,X(z)的部分分式展开为因此,
24、其z反变换为2、系统函数的零极点分析离散时间系统的系统函数定义为系统零状态响应的z变换与激励的z变换之比,即 (3-4)如果系统函数的有理函数表示式为 (3-5)那么,在MATLAB中系统函数的零极点就可通过函数roots得到,也可借助函数tf2zp得到,tf2zp的语句格式为Z,P,K=tf2zp(B,A)其中,B与A分别表示的分子与分母多项式的系数向量。它的作用是将的有理分式表示式转换为零极点增益形式,即 (3-6)【实例3-4】 已知一离散因果LTI系统的系统函数为试用MATLAB命令求该系统的零极点。解:用tf2zp函数求系统的零极点,MATLAB源程序为B=1,0.32;A=1,1,
25、0.16;R,P,K=tf2zp(B,A)R= -0.3200P= -0.8000 -0.2000K= 1因此,零点为,极点为与。若要获得系统函数的零极点分布图,可直接应用zplane函数,其语句格式为zplane(B,A)其中,B与A分别表示的分子和分母多项式的系数向量。它的作用是在Z平面上画出单位圆、零点与极点。【实例3-5】 已知一离散因果LTI系统的系统函数为试用MATLAB命令绘出该系统的零极点分布图。解:用zplane函数求系统的零极点,MATLAB源程序为B=1,0,-0.36;A=1,-1.52,0.68;zplane(B,A),grid onlegend(零点,极点)titl
26、e(零极点分布图)程序运行结果如图3-1所示。可见,该因果系统的极点全部在单位圆内,故系统是稳定的。图3-1 零极点分布图3、系统函数的零极点分布与其时域特性的关系与拉氏变换在连续系统中的作用类似,在离散系统中,z变换建立了时域函数与z域函数之间的对应关系。因此,z变换的函数从形式可以反映的部分内在性质。我们仍旧通过讨论的一阶极点情况,来说明系统函数的零极点分布与系统时域特性的关系。【实例3-6】 试用MATLAB命令画出现下列系统函数的零极点分布图、以及对应的时域单位取样响应的波形,并分析系统函数的极点对时域波形的影响。(1) (2) (3)(4) (5) (6)(7)解:MATLAB源程序
27、为b1=1,0;a1=1,-0.8;subplot(121)zplane(b1,a1)title(极点在单位圆内的正实数)subplot(122)impz(b1,a1,30);grid on;figureb2=1,0;a2=1,0.8;subplot(121)zplane(b2,a2)title(极点在单位圆内的负实数)subplot(122)impz(b2,a2,30);grid on;figureb3=1,0;a3=1,-1.2,0.72;subplot(121)zplane(b3,a3)title(极点在单位圆内的共轭复数)subplot(122)impz(b3,a3,30);grid
28、on;figureb4=1,0;a4=1,-1;subplot(121)zplane(b4,a4)title(极点在单位圆上为实数1)subplot(122)impz(b4,a4);grid on;figureb5=1,0;a5=1,-1.6,1;subplot(121)zplane(b5,a5)title(极点在单位圆上的共轭复数)subplot(122)impz(b5,a5,30);grid on;figureb6=1,0;a6=1,-1.2;subplot(121)zplane(b6,a6)title(极点在单位圆外的正实数)subplot(122)impz(b6,a6,30);grid
29、 on;figureb7=1,0;a7=1,-2,1.36;subplot(121)zplane(b7,a7)title(极点在单位圆外的共轭复数)subplot(122)impz(b7,a7,30);grid on;程序运行结果分别如图3-2的(a)、(b)、(c)、(d)、(e)、(f)、(g)所示。(a)(b)(c)(d)(e)(f)图3-2 系统函数的零极点分布与其时域特性的关系(g)从图3-2可知,当极点位于单位圆内时,为衰减序列;当极点位于单位圆上时,为等幅序列;当极点位于单位圆外时,为增幅序列。若有一阶实数极点,则为指数序列;若有一阶共轭极点,则为指数振荡序列;若的极点位于虚轴左
30、边,则序列按一正一负的规律交替变化。4、离散时间LTI系统的频率特性分析对于因果稳定的离散时间系统,如果激励序列为正弦序列,则系统的稳态响应为。其中,通常是复数。离散时间系统的频率响应定义为 (3-7)其中,称为离散时间系统的幅频特性;称为离散时间系统的相频特性;是以(,若零,)为周期的周期函数。因此,只要分析在范围内的情况,便可分析出系统的整个频率特性。MATLAB提供了求离散时间系统频响特性的函数freqz,调用freqz的格式主要有两种。一种形式为H,w=freqz(B,A,N)其中,B与A分别表示的分子和分母多项式的系数向量;N为正整数,默认值为512;返回值w包含范围内的N个频率等分
31、点;返回值H则是离散时间系统频率响应在范围内N个频率处的值。另一种形式为H,w=freqz(B,A,N,whole)与第一种方式不同之处在于角频率的范围由扩展到。【实例3-6】 用MATLAB命令绘制系统的频率响应曲线。 解:利用函数freqz计算出,然后利用函数abs和angle分别求出幅频特性与相频特性,最后利用plot命令绘出曲线。MATLAB源程序为b=1 -0.96 0.9028;a=1 -1.56 0.8109;H,w=freqz(b,a,400,whole);Hm=abs(H);Hp=angle(H);subplot(211)plot(w,Hm),grid onxlabel(om
32、ega(rad/s),ylabel(Magnitude)title(离散系统幅频特性曲线)subplot(212)plot(w,Hp),grid onxlabel(omega(rad/s),ylabel(Phase)title(离散系统相频特性曲线)程序运行结果如图3-3所示。图3-3 离散系统频响特性曲线四、实验内容1、试用MATLAB的residuez函数,求出的部分分式展开和。2、试用MATLAB画出下列因果系统的系统函数零极点分布图,并判断系统的稳定性。(1) (2)3、试用MATLAB绘制系统的频率响应曲线。实验四 离散傅立叶变换及其快速算法一、试验目的1、理解信号变换的基本概念2、
33、理解离散傅立叶变换的基本概念3、掌握快速傅立叶变换的应用方法二、实验条件装有MATLAB软件的PC机三、实验原理1、信号变换概述 信号是数字信号处理领域中最基本、最重要的概念。而数字信号变换技术,又是对信号进行处理操作的最基本的有效途径之一。因此,数字信号变换技术,便成为数字信号处理领域中专业人员所必须要掌握的一项最基本的技能。 简单地说,数字信号变换技术就是为了处理操作上的方便和可能,通过数学变换,将一个域内的信号变换映射倒另一个域内的信号的方法。常用的数字信号变换主要有:傅立叶变换、离散余弦变换(DCT)、Z变换、Chirp z变换、Hilbert变换等。这些变换,都有着各自的理论和其应用
34、背景。MATLAB中的工具箱对这几种典型的变换,都提供了相对应的、具体的应用函数。这可以使得工程人员大大节省无谓的工作量,从而将主要精力放到新技术的创新和研发上面。下面将对这几种变换的含义和应用进行具体的介绍。2、离散傅立叶变换傅立叶变换是信号分析和处理的重要工具。有限长序列作为离散信号的一种,在数字信号处理种占有着极其重要的位置。对于有限长序列,离散傅立叶变换不仅在理论上有着重要的意义,而且有快速计算的方法快速傅立叶变换。所以在各种数字信号处理的运算方法中,越来越起到核心的作用。下面,就对离散傅立叶变换及其MATLAB函数应用,结合实际工程实例做说明。3、傅立叶变换的几种形式非周期连续时间信
35、号的傅立叶变换非周期连续时间信号的傅立叶变换可以表示为逆变换为在这里,是模拟角频率。可以看到,时域的连续函数造成频域的非周期谱,时域的非周期性造成频域的连续谱。结论:非周期连续时间函数对应于一非周期连续频域变换函数。周期连续时间信号的傅立叶变换周期为的周期性连续时间信号傅立叶变换是离散频域函数,可表示为逆变换为这就是经常称之为傅立叶级数的变换形式。在这里,也是模拟角频率。可以看到,时域的连续函数造成频率域的非周期谱,频域函数的离散造成时域函数的周期性。结论:周期连续时间函数对应于一非周期离散频域变换函数。非周期离散时间信号的傅立叶变换可以表示为逆变换为在这里,是数字频率,它和模拟角频率的关系为
36、。可以看到,时域的取样对应于频域的周期延拓,而时域函数的非周期性造成频域的离散谱。结论:非周期离散时间函数对应于一周期连续频域变换函数。周期离散时间信号的傅立叶变换周期离散时间信号的傅立叶变换离散傅立叶变换,可以表示为逆变换为可以看到,时域的取样对应于频域的周期延拓,而时域函数的周期性造成频域的离散谱。结论:周期离散时间函数对应于一周期离散频域变换函数。4、离散傅立叶变换离散傅立叶级数变换是周期序列,仍不便于计算机计算。但离散傅立叶级数虽是周期序列,却只有个独立的数值,所以它的许多特性可以通过有限长序列延拓来得到。对于一个长度为的有限长序列,也即只在个点上有非零值,其余皆为零,即把序列以为周期
37、进行周期延拓得到周期序列,则有所以,有限长序列的离散傅立叶变换(DFT)为逆变换为若将DFT变换的定义写成矩阵形式,则得到X=Ax,其中DFT变换矩阵A为Dftmtx 函数:用来计算DFT变换矩阵A的函数调用方式(1) Adftmta(n):返回nn的DFT变换矩阵A。若x为给定长度的行向量,则yx*A,返回x的DFT变换y。(2) Aiconj(dftmtx(n)/n;返回nn的IDFT变换矩阵Ai。应用说明【实例4-1】 A=dftmtx(4) Ai=conj(dftmtx(4)/4运行结果A = 1.0000 1.0000 1.0000 1.0000 1.0000 0 - 1.0000i
38、 -1.0000 0 + 1.0000i 1.0000 -1.0000 1.0000 -1.0000 1.0000 0 + 1.0000i -1.0000 0 - 1.0000iAi = 0.2500 0.2500 0.2500 0.2500 0.2500 0 + 0.2500i -0.2500 0 - 0.2500i 0.2500 -0.2500 0.2500 -0.2500 0.2500 0 - 0.2500i -0.2500 0 + 0.2500i【实例4-2】如果是一个N16的有限序列,用MATLAB求其DFT的结果,并画出其结果图,如图4-1所示。图 4-1 有限长序列的DFT结果图
39、程序N=16;n=0:1:N-1; %时域采样xn=sin(n*pi/8)+sin(n*pi/4);k=0:1:N-1; %频域采样WN=exp(-j*2*pi/N);nk=n*k;WNnk=WN.nk;Xk=xn*WNnk;subplot(2,1,1)stem(n,xn);subplot(2,1,2)stem(k,abs(Xk);运算结果Xk = Columns 1 through 5 0.0000 -0.0000 - 8.0000i -0.0000 - 8.0000i 0.0000 - 0.0000i 0.0000 - 0.0000i Columns 6 through 10 -0.0000 - 0.0000i 0.0000 - 0.0000i 0.0000 - 0.0000i 0.0000 - 0.0000i 0.0000 - 0.0000i Columns 11 through 15 0.0000 - 0.0000i 0.0000 - 0.0000i 0.0000 - 0.0000i 0.0000 - 0.0000i 0.0000 + 8.0000i Column 16 0.0000 + 8.0000i5、DFT的性质两个序列和都是N点有限长序列,设线性式中a,b为任意常数。