第一篇:实验二 应用FFT对信号进行频谱分析-作业要求
实验二 应用fft对信号进行频谱分析
作业要求:
1、利用matlab编程计算教材中59页例2-2的结果,并画出频谱图。
2、已知有限长序列x(n)=[7,6,5,4,3,2],求x(n)的DFT和IDFT。要求:①画出序列傅里叶变换对应的|X(k)|和arg[X(k)]的图形。
②画出原信号与傅里叶逆变换IDFT[X(k)]的图形进行比较。
3、实验教材第11页第3题。
4、已知一个周期序列x(k)cos(
8k
3)0.5cos(
4k),利用FFT计算其频谱。
5、有限长序列的离散傅里叶变换(DFT)与离散时间傅里叶变换(DTFT)有何联系与区别?
第二篇:DFT在信号频谱分析中的应用
设计一 DFT在信号频谱分析中的应用
一、设计目的
1.熟悉DFT的性质。
2.加深理解信号频谱的概念及性质。
3.了解高密度谱与高分辨率频谱的区别。
二、设计任务与要求
1.学习用DFT和补零DFT的方法来计算信号的频谱。
2.用MATLAB语言编程来实现,在做课程设计前,必须充分预习课本DTFT、DFT及补零DFT的有关概念,熟悉MATLAB语言,独立编写程序。
三、设计内容
1.用MATLAB语言编写计算序列x(n)的N点DFT的m函数文件dft.m。并与MATLAB中的内部函数文件fft.m作比较。参考程序如下: function Xk=dft(xn,N)if length(xn) xn=[xn,zeros(1,N-length(xn))];end n=0:N-1;for k=0:N-1 Xk(1,k+1)=sum(xn.*exp((-1)*j*n*k*(2*pi/N)));end 2.对离散确定信号 x(n)cos(0.48n)cos(0.52n) 作如下谱分析: (1)截取x(n)使x(n)成为有限长序列N(0nN-1),(长度N自己选)写程序计 算出x(n)的N点DFT X(k),画出时域序列图xn~n和相应的幅频图X(k)~k。参考程序如下:(假设N取11,即0≤n≤10 时, 编写程序,计算出X(n)的11点DFT Xk) n = 0:10;xn=cos(0.48*pi*n)+cos(0.52*pi*n);Xk = fft(xn, 11);subplot(2,1,1);stem(n, xn);grid;subplot(2,1,2);stem(n, abs(Xk));grid; (2)将(1)中x(n)补零加长至M点,长度M自己选,(为了比较补零长短的影响,M可以取两次值,一次取较小的整数,一次取较大的整数),编写程序计算x(n)的M点DFT, 画出时域序列图和两次补零后相应的DFT幅频图。 参考程序如下:(假设M取20和M取70,即分别补9个0和59个0,得补零后20点的序列xn1和70点的序列xn2,编写程序,计算出xn1的20点DFT Xk1和 xn2的70点DFT Xk2) n = 0:10;xn=cos(0.48*pi*n)+cos(0.52*pi*n);n1 = 0:19;xn1 = [xn, zeros(1,9)];n2= 0:69;xn2 = [xn, zeros(1,59)];Xk1 = fft(xn1, 20);Xk2 = fft(xn2, 70);subplot(3,1,1);stem(n, xn);grid;subplot(3,1,2);stem(n1, abs(Xk1));grid;subplot(3,1,3);stem(n2, abs(Xk2));grid; (2)用补零DFT计算(1)中N点有限长序列x(n)频谱X(ej)并画出相应的幅频图 X(ej)~。 参考程序如下:(假设M取200) n = 0:10;xn=cos(0.48*pi*n)+cos(0.52*pi*n);n1 = 0:199;xn3 = [xn, zeros(1,189)];Xk3 = fft(xn3, 200);plot(n1, abs(Xk3));grid;3.研究高密度谱与高分辨率频谱。 对连续确定信号xa(t)cos(26.510t)cos(2710t)cos(2910t)以采样频率fs=32kHz对信号xa(t)采样得离散信号x(n),分析下列三种情况的幅频特性。(1)采集数据x(n)长度取N=17点,编写程序计算出x(n)的17点DFTX(k),并画出相应 的幅频图X(k)~k。 (2)采集数据x(n)长度N=17点,补零加长至M点(长度M自己选),利用补零DFT计算 333 x(n)的频谱X1(ej)并画出相应的幅频图X1(ej)~。 (3)采集数据x(n)长度取为M点(注意不是补零至M),编写程序计算出M点采集数据x(n)的的频谱X2(ej)并画出相应的幅频图X2(ej)~。 参考程序如下: T=1/(32*10^3);t=(0:16);xn=cos(2*pi*6.5*10^3*t*T)+cos(2*pi*7*10^3*t*T)+cos(2*pi*9*10^3*t*T);Xk=fft(xn,17);subplot(2,1,1);stem(t,xn);grid;subplot(2,1,2);stem(t,abs(Xk));grid; T=1/(32*10^3);t=(0:16);xn=cos(2*pi*6.5*10^3*t*T)+cos(2*pi*7*10^3*t*T)+cos(2*pi*9*10^3*t*T);n1=0:20;xn1=[xn,zeros(1,4)];Xk1=fft(xn1,21);subplot(2,1,1);stem(n1,xn1);grid;subplot(2,1,2);plot(n1,abs(Xk1));grid; T=1/(32*10^3);t=[0:20];xn=cos(2*pi*6.5*10^3*t*T)+cos(2*pi*7*10^3*t*T)+cos(2*pi*9*10^3*t*T);Xk2=fft(xn,21);subplot(2,1,1);stem(t,xn);grid;subplot(2,1,2);plot(t,abs(Xk2));grid; 四、设计报告要求 1.简述设计目的及原理。 2.完成设计中要求的各种理论推导和计算,并列出相应的MATLAB程序。3.绘出设计中要求的各种曲线,并作出说明。 4.结合设计过程,归纳得出结论,并分析设计中遇到的问题及解决思路和方法。5.写出设计体会。 6.简要回答如下思考题: (1)对比设计内容2中(1)(2)(3)的图,说明补零DFT的作用。 jj(2)解释设计内容3中X1(e)~图和X2(e)~图有什么区别?补零DFT 能否提高信号的频谱分辨率,说明提高频谱密度、频谱分辨率的措施各是什么? 实验二离散时间信号分析 一、实验目的1.掌握各种常用的序列,理解其数学表达式和波形表示。 2.掌握在计算机中生成及绘制数字信号波形的方法。 3.掌握序列的相加、相乘、移位、反褶等基本运算及计算机实现与作用。 4.掌握线性卷积软件实现的方法。 5.掌握计算机的使用方法和常用系统软件及应用软件的使用。 6.通过编程,上机调试程序,进一步增强使用计算机解决问题的能力。 二、实验原理 1.序列的基本概念 离散时间信号在数学上可用时间序列{x(n)}来表示,其中x(n)代表序列的第n个数字,n代表时间的序列,n的取值范围为n的整数,n取其它值x(n)没有意义。离散时间信号可以是由模拟信号通过采样得到,例如对模拟信号xa(t)进行等间隔采样,采样间隔为T,得到{xa(nT)}一个有序的数字序列就是离散时间信号,简称序列。 2.常用序列 常用序列有:单位脉冲序列(单位抽样)(n)、单位阶跃序列u(n)、矩形序列RN(n)、实指数序列、复指数序列、正弦型序列等。 3.序列的基本运算 序列的运算包括移位、反褶、和、积、标乘、累加、差分运算等。 4.序列的卷积运算 y(n) mx(m)h(nm)x(n)h(n) 上式的运算关系称为卷积运算,式中代表两个序列卷积运算。两个序列的卷积是一个序列与另一个序列反褶后逐次移位乘积之和,故称为离散卷积,也称两序列的线性卷积。其计算的过程包括以下4个步骤。 (1)反褶:先将x(n)和h(n)的变量n换成m,变成x(m)和h(m),再将h(m)以纵轴为对称轴反褶成h(m)。 (2)移位:将h(m)移位n,得h(nm)。当n为正数时,右移n位;当n为负数时,左移n位。 (3)相乘:将h(nm)和x(m)的对应点值相乘。 (4)求和:将以上所有对应点的乘积累加起来,即得y(n)。 5.matlab命令 1、单位采样序列:可用MATLAB中的zeros函数实现; X=[1 zeros(1,n-1)] 2、单位阶跃序列:这一序列可用MATLAB中的zeros函数实现; X=ones(1,N) 3、实指数序列; n=0:N-1; x=a.^n; 4、正弦波: t=0:0.01*pi:2*pi x=sin(2*pi*t); plot(t,x); xlabel(‘时间t’); ylabel(‘幅值y’); 5、移位 用MATLAB编写一个移位函数sigshift() function [y,m]=sigshift(x,n,k) %implements y(m+k)=x(n) m=n+k; y=x; 把上面的矩形序列右移3位 n0=0; n1=-10; n2=10; n=[n1:n2]; x=[(n-n0)>=0&(n-4)<=0]; k=3; [y,n]=sigshift(x,n,k); stem(n,y); xlabel('n');ylabel('x(n)'); title('step sequence'); grid6、翻褶 用MATLAB编写一个翻褶函数sigfold() function [y,n]=sigfold(x,m,k) y=fliplr(x); n=-fliplr(n); 用MATLAB编写一个程序把上面的矩形序列翻褶 三、主要实验仪器及材料 微型计算机、Matlab6.5教学版、TC编程环境。 四、实验内容 1.知识准备 认真复习以上基础理论,理解本实验所用到的实验原理。 2.离散时间信号(序列)的产生。 利用MATLAB编程产生和绘制下列有限长序列: (1)单位脉冲序列(n) (2)单位阶跃序列u(n) (3)矩形序列R8(n) (4)正弦型序列x(n)Asin((5)任意序列 5n3) x(n)(n)2(n1)3(n2)4(n3)5(n4) h(n)(n)2(n1)(n2)2(n3) 3.序列的运算 利用MATLAB编程完成上述两序列的移位、反褶等运算,并绘制运算后序列的波形。 4.卷积运算 利用MATLAB编制一个计算两个序列线性卷积的通用程序,计算上述两序列x(n)h(n),并绘制卷积后序列的波形。 5.上机调试并打印或记录实验结果。 6.完成实验报告。 五、实验报告要求 1.简述实验原理及目的。 2.列出计算卷积的公式,画出程序框图,并列出实验程序清单(可略)(包括必要的程序说明)。 3.记录调试运行情况及所遇问题的解决方法。 4.给出实验结果,并对结果作出分析。 实验一语音信号分析与处理 学号姓名注:1)此次实验作为《数字信号处理》课程实验成绩的重要依据,请同学们认真、独立完成,不得抄袭。 2)请在授课教师规定的时间内完成; 3)完成作业后,请以word格式保存,文件名为:学号+姓名 4)请通读全文,依据第2及第3 两部分内容,认真填写第4部分所需的实验数据,并给出程序内容。 1.实验目的(1)学会MATLAB的使用,掌握MATLAB的程序设计方法 (2)掌握在windows环境下语音信号采集的方法 (3)掌握MATLAB设计FIR和IIR滤波器的方法及应用 (4)学会用MATLAB对语音信号的分析与处理方法 2.实验内容 录制一段自己的语音信号,对录制的语音信号进行采样,画出采样后语音信号的时域波形和频谱图,确定语音信号的频带范围;使用MATLAB产生白噪声信号模拟语音信号在处理过程中的加性噪声并与语音信号进行叠加,画出受污染语音信号的时域波形和频谱图;采用双线性法设计出IIR滤波器和窗函数法设计出FIR滤波器,画出滤波器的频响特性图;用自己设计的这两种滤波器分别对受污染的语音信号进行滤波,画出滤波后语音信号的时域波形和频谱图;对滤波前后的语音信号进行时域波形和频谱图的对比,分析信号的变化;回放语音信号,感觉与原始语音的不同。 3.实验步骤 1)语音信号的采集与回放 利用windous下的录音机或其他软件录制一段自己的语音(规定:语音内容为自己的名字,以wav格式保存,如wql.wav),时间控制再2秒之内,利用MATLAB提供的函数wavread对语音信号进行采样,提供sound函数对语音信号进行回放。 [y,fs,nbits]=wavread(file),采样值放在向量y中,fs表示采样频率nbits表示采样位数。Wavread的更多用法请使用help命令自行查询。 2)语音信号的频谱分析 利用fft函数对信号进行频谱分析 3)受白噪声干扰的语音信号的产生与频谱分析 ①白噪声的产生: N1=sqrt(方差值)×randn(语音数据长度,2)(其中2表示2列,是由于双声道的原因)然后根据语音信号的频谱范围让白噪声信号通过一个带通滤波器得到一个带限的白噪声信号N2; 带通滤波器的冲激响应为: hB(n)=c2 sinc(c2 (n))c1 sinc(c1 (n))其中ωc1为通带滤波器的下截止频率,ωc2为通带滤波器的上截止频率。其中下截止频率由每个人的语音信号的最高频率确定 滤波器的长度N由滤波器的过渡带确定,一般不宜太小(大于1000),α=(N-1)/2; ②信号y通过低通滤波器,得到信号为x1 低通滤波器的冲激响应为: hL(n)c1sinc(c1 (n))其中的ωc1与上面的带通滤波器的下截止频率一致,滤波器的长度N也于上面的带通滤波器一致,α=(N-1)/2 ③将N1加上x1得到一个受到噪声污染的声音信号 4)据语音信号的频带情况,设计FIR和IIR两种滤波器 5)用滤波器对受污染语音信号进行滤波 FIR滤波器fftfilt函数对信号进行滤波,IIR滤波器用filter函数对信号进行滤波 6)比较滤波前后信号的波形与频谱 7)回放滤波后的语音信号 4.实验数据及实验程序 实验数据 1)原始语音信号的时域波形和频谱图及语音信号的频带范围 2)带限白噪声信号的时域波形和幅频特性 3)受污染语音信号的时域波形和幅频谱图 4)滤波器的频响特性图 FIR滤波器的幅频响特性图 IIR滤波器的幅频响特性图 5)滤波后语音信号的时域波形和频谱图 6)滤波前后的语音信号时域波形对比图和幅频谱对比图 7)将实验的资料的电子文档交给班长(建立一个文件夹,里面包括:①实验报告的电子版;②采集的语音信号电子文件;③受污染的语音信号及滤波后的语音信号存在文件名为“姓名+学号.mat”文件的文件中) 实验程序: 1)实验主程序 2)FIR滤波器子程序 3)IIR滤波器子程序 武汉工程大学 数字信号处理实验报告二 专业班级: 14级通信03班 学生姓名:秦重双 学号: 1404201114 实验时间: 2017年5月3日 实验地点: 4B315 指导老师:杨述斌 实验一离散时间信号的分析实验 一、实验目的 ① 认识常用的各种信号,理解其数学表达式和波形表示。② 掌握在计算机中生成及绘制数值信号波形的方法。③ 掌握序列的简单运算及计算机实现与作用。 ④ 理解离散时间傅里叶变换、Z变换及它们的性质和信号的频域特性。 二、实验设备 计算机,MATLAB语言环境。 三、实验基础理论 1、序列的相关概念 离散时间信号用一个称为样本的数字序列来表示。一般用{x[n]}表示,其中自变量n的取值范围是﹣∞到﹢∞之间的整数。为了表示方便,序列通常直接用x[n]表示。 离散时间信号可以是一个有限长序列,也可以是一个无限长序列。有限长(也称为有限时宽)序列仅定义在有限的时间间隔中:﹣∞≤N1 ≤N2 ≤+∝.有限长序列的长度或时宽为N=N1-N2+1。 满足x[n+kN]=x[n](对于所有n)的序列称为周期为N的周期序列,其中N取任意正整数;k取任意整数; 2、常见序列 常见序列有单位取样值信号、单位阶跃序列、矩形序列、斜变序列、单边指数序列、正弦序列、复指数序列等。 3、序列的基本运算 序列的基本运算有加法、乘法、倒置(反转)、移位、尺度变换、卷积等。 4、离散傅里叶变换的相关概念 5、Z变换的相关概念 四.实验内容与步骤 1、知识准备 认真复习以上基础理论,理解本实验所用到的实验原理。 2、离散时间信号(序列)的产生 利用MATLAB语言编程和绘制单位样值信号、单位阶跃序列、指数序列、正弦序列及随机离散信号的波形,以加深对离散信号时域表示的理解。① 单位取样值信号 Matlab程序 x=0;y=1;stem(x,y);title('单位样值');axis([-2,2,0,1]); ② 单位阶跃序列 Matlab程序 n0=0;n1=-5;n2=5;n=[n1:n2];x=[(n-n0)>=0];stem(n,x);xlabel('n');ylabel('x(n)');title('单位阶跃序列'); ③ 指数序列、正弦序列 Matlab程序 n=[0:10];x=(1/3).^n;stem(n,x);xlabel('n');ylabel('x(n)');title('指数序列'); n=[-20:20];x=2*sin(0.5.*n);stem(n,x);xlabel('n');ylabel('x(n)');axis([-20,20,-3,3]);title('正弦序列'); ④ 随机离散信号矩形序列 Matlab程序 n=[1:10];x=rand(1,10);stem(n,x);xlabel('n');ylabel('x(n)');title('随机序列'); 3、序列的运算 数字信号处理的目的,就是从一个或几个给定的离散时间信号中产生一个具有所需性质的信号。处理算法由加法、乘法、倒置(反转)、移位、尺度变换、卷积等基本运算组合构成。此部分实验将通过几个简单常见的例子说明这些基本运算的实际运用,以便进一步理解序列的简单运算及计算机实现与作用。(1)信号平滑 利用MATLAB语言编程实现信号平滑运算。信号平滑是数字信号处理应用中的一个常见的算法,以虑出被加性噪声污染的信号中的噪声。假定信号s[n]被噪声d[n]所污染,得到了一个含有加性噪声的信号x[n]=s[n]+d[n]。要得到无污染的信号,可用简单的信号平滑即信号的加法实现。例如,采用三点(可选,以信号特点来定)平滑来实现。y[n]=(x[n-1]+x[n]+x[n+1])/3 由此可以理解平滑滤波的处理方法。 Matlab程序 r=65; d=0.8*(rand(r,1)-0.5);m=0:r-1;s=2*m.*(0.9.^m);x=s+d';subplot(2,1,1); plot(m,d','r-',m,s,'g--',m,x,'b-.');xlabel('n');ylabel('振幅'); legend('d[n]','s[n]','x[n]');x1=[0 0 x];x2=[0 x 0];x3=[x 0 0];y=(x1+x2+x3)/3;subplot(2,1,2); plot(m,y(2:r+1),'r-',m,s,'g--');legand('y[n]','s[n]');xlabel('n');ylabel('振幅'); (2)调制信号的产生 利用MATLAB语言编程实现信号的调制。调制信号是工程应用中常用的一类信号,调制信号的产生可以通过序列的乘法运算得到。例如,用低频调制信号xL[n]=cos(wln)来调制高频正弦信号xH[n]=cos(wHn),就可得到振幅调制信号y[n]。 y[n]=A(1+m*xL[n])xH[n]=A(1+mcos(wLn))cos(wHn)其中m称为调制指数,用来确保(1+m*xL[n])在所有可能的n的情况下m都是正数。以上式进行编程即可实现调制的目的。 Matlab程序 Fm=10;Fc=100;Fs=500;k=0:199;t=k/Fs;x=sin(2*pi*Fm*t);y=x.*cos(2*pi*Fc*t);X=fft(x,256);Y=fft(y,256);subplot(2,2,1);plot(x); xlabel('t(s)');ylabel('x');title('原信号'); subplot(2,2,2);plot(X); plot([-128:127],fftshift(abs(X)));xlabel('w');ylabel('X(jw)');title('原信号频谱'); subplot(2,2,3);plot(y);xlabel('t(s)');ylabel('y');title('调制信号');subplot(2,2,4); plot(Y);plot([-128:127],fftshift(abs(Y)));xlabel('w');ylabel('Y(jw)');title('调制信号频谱'); (3)卷积的计算 用MATLAB语言编程可实现信号卷积运算。卷积是数字信号处理中非常重要的一个运算,用卷积可以计算一个序列通过离散系统后的响应信息。如可以编程实现9点对7点(序列长度可以自己设定)的序列卷积运算。 Matlab程序 x=[0 0.5 1 1.5 0];nx=0:4;h=[1 1 1 0 0];nh=0:4;[y,ny]=conv_m(x,nx,h,nh);subplot(2,2,1);stem(nx,x);title('序列x');xlabel('n');ylabel('x(n)');subplot(2,2,2);stem(nh,h);title('序列h');xlabel('n');ylabel('h(n)');subplot(2,2,3);stem(ny,y);title('');xlabel('n');ylabel('y(n)'); conv_m函数程序 function[y,ny]=conv_m(x,nx,h,nh)%信号处理的卷积程序 %[y,ny]=conv_m(x,nx,h,nh)%y=卷积结果 %ny=y的基底(support);%nx=x的基底;%h=基底nh上的第二个信号 %nh=h的基底 nyb=nx(1)+nh(1);nye=nx(length(x))+nh(length(h));ny=[nyb:nye];y=conv(x,h);end 两 序 列 卷 积 (4)序列的离散傅里叶变换,Z变换及信号频域特性 用MATLAB语言编程实现信号离散傅里叶的正反变换。Matlab程序 xn=[1,1,1,1];N=4;k=dft(xn,N)' Xk=[4,0,0,0];N=4;Xk=idft(xn,N)' xn=[1,1,1,1];N=length(xn);n=0:N-1;k=0:N-1;Xk=xn*exp(-j*2*pi/N).^(n'*k);x=(Xk*exp(j*2*pi/N).^(n'*k))/N;subplot(1,2,2);stem(k,abs(Xk));grid on;title('|X(k)|');axis([-1,N,1.1*min(abs(Xk)),1.1*max(abs(Xk))]);subplot(1,2,1);stem(n,xn);grid;title('x(n)');axis([-1,N,1.1*min(xn),1.1*max(xn)]); dft函数程序 function[Xk]=dft(xn,N)n=[0:1:N-1];k=n;WN=exp(-j*2*pi/N);nk=n'*k;WNnk=WN.^nk;Xk=xn*WNnk;end idft函数程序 function[Xk]=idft(xn,N)n=[0:1:N-1];k=n;WN=exp(-j*2*pi/N);nk=n'*k;WNnk=WN.^(-nk);Xk=xn*WNnk/N; end 用MATLAB语言编程实现信号的圆周移位、圆周卷积、验证DFT的圆周时移、圆周卷积性质和圆周卷积与线性卷积的关系。 圆周移位 Matlab程序 n=[0:10];M=6;N=11;x=10*0.8.^n;y=cirshift(x,M,N);subplot(2,1,1);stem(n,x); title('Ô-ÐòÁв¨ÐÎ');xlabel('n');ylabel('x(n)');subplot(2,1,2);stem(n,y); title('Ô²ÖÜÒÆλÐòÁв¨ÐÎ');xlabel('n');ylabel('y(n)'); sigmod函数程序 function[ m ]= sigmod(n,N);m=rem(n,N);m=m+N;m=rem(m,N);end cirshift函数程序 function[ y ]= cirshift(x,m,N);if length(x)>N error('N must be greater than length(x)');end x=[x zeros(1,N-length(x))];n=[0:N-1];n=sigmod(n-m,N);y=x(n+1);end 圆周卷积 Matlab程序 x1=[1 2 2];n1=[0:2];x2=[1 2 3 4];n2=[0:3];disp('N=5');n3=[0:4];N=5;y=circonvt(x1,x2,N)subplot(3,1,1);stem(n1,x1);title('x1');xlabel('n1');ylabel('x1(n)');subplot(3,1,2);stem(n2,x2);title('x2');xlabel('n2');ylabel('x2(n)');subplot(3,1,3);stem(n3,y);title('圆周卷积');xlabel('n3');ylabel('y(n)'); circonvt函数程序 function [y] = circonvt(x1,x2,N);if length(x1)>N error('Length(x1)is not great than N');end if length(x2)>N error('Length(x2)is not great than N');end x1=[x1, zeros(1,N-length(x1))];x2=[x2, zeros(1,N-length(x2))];m=[0:N-1];x2=x2(mod(-m,N)+1);H=zeros(N,N);for n=1:N;H(n,:)=cirshift(x2,n-1,N);end y=x1*H';end 验证一个实周期序列奇偶部分的DFT与此序列本身的DFT之间的关系。Matlab程序 function[xe,xo,m]=evenodd(x,n)if any(imag(x)~=0)error end m=-fliplr(n);m1=min([m,n]);m2=max([m,n]);m=m1:m2; nm=n(1)-m(1);n1=1:length(n);x1=zeros(1,length(m));x1(n1+nm)=x;x=x1;xe=0.5*(x+fliplr(x));xo=0.5*(x-fliplr(x));n=[0:10];x=stepseq(0,0,10)-stepseq(10,0,10);[xe,xo,m]=evenodd(x,n); subplot(2,2,2);stem(m,xe);title('偶部');xlabel('n');ylabel('xe(n)');subplot(2,2,4);stem(m,xo);title('奇部');xlabel('n');ylabel('xo(n)'); 用MATLAB语言编程实现信号的Z变换及其反变换、Z变换的零极点分布。 a=[1 1-6];b=[0 5 0]; [r,p,k]=residuez(b,a);subplot(121);zplane(b,a); title('零极点分布图');[H,w]=freqz(b,a,100);magH=abs(H);phaH=angle(H);figure(2) subplot(222);plot(w/pi,magH);grid xlabel('frequency in pi units');title('magnitude part'); subplot(223),plot(w/pi,phaH/pi);grid xlabel('frequency in pi units');title('Angle part'); 五、实验扩展思考 ① 编程产生方波信号序列和锯齿波信号序列。 x=[0:1/256:8];y1=square(pi*x); subplot(2,1,1);plot(x,y1);axis([0,8,-2,2]);title('方波');xlabel('x');ylabel('y1');grid on;y2=sawtooth(pi*x);subplot(2,1,2);plot(x,y2);title('锯齿波');xlabel('x');ylabel('y2');grid on; ② 实验中所产生的正弦序列的频率是多少?怎样才能改变它?分别是哪些参数控制该序列的相位、振幅和周期? 正弦序x[n=]Asin(w0n+Φ)频率f=w0/2pi通过改变w0改变频率f;Φ控制序列相位,A控制序列振幅,w0控制序列周期。 ③ 编程实现序列长度为N的L点的正反离散傅里叶变换,并分析讨论所得出的结果,其中L≧N,如L=8,N=6。 function[Xk]=dft(xn,N)n=[0:1:8-1];k=n;WN=exp(-1j*2*pi/N);nk=n'*k;WNnk=WN.^nk;Xk=xn*WNnk; function[Xk]=idft(xn,N)n=[0:1:8-1];k=n;WN=exp(-1j*2*pi/N);nk=n'*k;WNnk=WN.^(-nk);Xk=xn*WNnk/N; ④ 由实验说明离散傅里叶变换的对称关系,说明序列的时域和频域的关联特性。 离散傅里叶变换具有共轭对称性 (1)复共轭序列的DFT。设x*(n)为x(n)的复共轭序列,长度为N,X(k)=DFT[x(n)],则DFT[x*(n)]=X*(N-K),0<=k<=N-1(2)DFT的共轭对称性。 定义圆周共轭对称分量xep(n)和圆周共轭反对称分量xop(n)xep(n)=1/2[x(n)+x*(N-n)],xop(n)=1/2[x(n)-x*(N-n)]则 DFT[xep(n)]=Re[X(k)], DFT[xop(n)]=jIm[X(k)] 序列的时域和频域的关联特性(1)时域卷积对应频域相乘 设f[x(n)]=X(ejw),f[h(n)]=H(ejw),y(n)=x(n)*h(n), 则Y(e^jw)=1/2pi[X(e^jw)*H(e^jw)](2)时域相乘对应于1/2*pi的频域卷积 设f[x(n)]=X(e^jw),f[h(n)]=H(e^jw),y(n)=x(n)h(n),则Y(e^jw)=1/2*pi[X(e^jw)*H(e^jw)] 六、实验报告要求 1、实验中的主要结论:圆周卷积与线性卷积之间的关系。 设圆周卷积y(n)=∑x1(m)x2(n-m)LRL(n),线性卷积y1(n)=x1(n)*x2(n),则y(n)=[∑y1(n+rL)]Rl(n),及当L>=N1+N2-1,y(n)=y1(n)。 2、通过编写程序,让我更熟练的使用MATLAB,能更好的理解书本所学的内容 3、心得体会:在使用matlab软件定义函数时,必须对函数的含义理解清楚,要不然很容易定义函数出现错误。其次要对matlab自带函数的含义用法理解清楚。这次实验我最大的收获就是对离散时间序列的理论基础的概念有了一个很好的复习和更深刻的认识。遇到最大的问题就是定义函数时考虑不够全面。但是我相信随着后面实验的进行,我能将matlab这个工具与课本的理论基础知识完美的结合起来。第三篇:实验二离散时间信号分析
第四篇:实验二语音信号分析与处理2010
第五篇:武汉工程大学matlab实验二离散时间信号的分析实验