PDF精选 - 千万精品文档,你想要的都能搜到,下载即用。

《数字信号处理》实验大纲.pdf

碍人【AiRen]38 页 1.15 MB下载文档
《数字信号处理》实验大纲.pdf《数字信号处理》实验大纲.pdf《数字信号处理》实验大纲.pdf《数字信号处理》实验大纲.pdf《数字信号处理》实验大纲.pdf《数字信号处理》实验大纲.pdf
当前文档共38页 2.88
下载后继续阅读

《数字信号处理》实验大纲.pdf

天津工程师范学院 电子工程系实验实训中心 《数字信号处理》实验教学大纲 1.课程基本信息 中文课程名 数字信号处理 称 英文课程名 Digital signal processing 课程编号 课程类型 开设专业 课程总学时 090012504 专业基础课 电信、微电、 64 090012402 专业基础课 通信、电科 32 实验学时 10 6 备注 2.课程简介 当今人类正进入信息时代,而数字化是信息时代发展的方向。因此,数字信号处理技术 已成为每一个电子信息科学工作者必须掌握的重要知识。数字信号处理课程已成为通信、电 信、应教、微电等专业的必修专业课程。它采用计算机和专用处理设备,以数值计算的方法 对信号进行分析、变换、滤波、检测、估计与识别等加工处理,以达到提取信息便于使用的 目的。 3.实验目的 通过本实验课程的学习,使学生掌握利用 Matlab 软件进行数字信号处理的方法,从 而验证理论知识,并能够解决实际问题。 4.实验报告内容 (1)学生姓名、学号、实验组号及组内编号等; (2)实验题目:阐述做本实验的目的; (3)目的要求:实验过程中的基础知识、预习报告、特殊器材等; (4)实验设备: 仪器名称及主要规格(包括量程、分度值等) 、用具名称、软件等。 (5)实验原理:简单但要抓住要点,即要写出依据原理的公式名称、公式表达式、公式中 各物理量的名称、公式成立的条件。画出电路图(光路图)等。 (6)实验内容: (对一些实验,根据要求要有实验步骤) 实验内容主要含实验数据表格、实验程序代码、数据处理、仿真波形等。 (7)实验结果:程序运行结果、测试结果等; (8)实验总结:通过实验学到的知识、实验过程中的难点、存在的问题和实验收获等。 5.实验考试(考核) (1)学生实验课成绩由过程考核和实验报告两部分组成,各占 50%,平时成绩和报告成 绩采用 5 分制、总成绩采用百分制。 (2)实验过程: 由老师考核实验过程中学生实验线路连接是否正确;实验程序编写是否正确;仪器使用 是否规范;能否按要求独立操作;遇到问题能否判断处理;测量数据是否正确;能否在规定 时间完成实验内容;实验结束时是否能按要求将仪器复位;课上是否能主动探索和研究问题 和考勤等。 (3)实验报告: 是否符合实验报告要求的格式,叙述是否清楚;数据处理中的有效数字、单位、作图、 思考题回答是否正确等。 6.实验项目设置与内容 序号 1 实验名称 常见数字信号 的 MATLAB 实 现 2 离散序列的卷 积和系统差分 方程的 ATLAB 内容要求 实验 每组 实验 开出 学时 人数 属性 要求 掌握正弦序列 MATLAB 实 2 现;随机信号的 MATLAB 实现; 指数信号的 MATLAB 实现;单位 阶跃序列。 1 验证 必做 掌握卷积定理计算及验证;卷积 2 1 验证 必做 2 1 验证 必做 定律验证;求系统的单位冲激响 应和阶跃响应;一个三阶低通滤 实现 波器差分方程描述。 3 Z 变 换和 系统 频域特性的 MATLAB 实现 通过 Z 变换分析求解系统的冲激 响应 h(n);通过 z 变换分析离散 系统的频率响应和零、极点分布 画 出 因 果 系 统 y (n) = 0.9 y (n − 1) + x(n) 的零、 极点图和频率响应曲线,并求出 脉冲响应 h(n)。定性画出系统 H ( z ) = 1 − z − N 的零、极点图和 频率响应曲线。 4 离散傅里 叶变换(DFT)的 MATLAB 实现 离散傅里叶变换及基本性质; 2 1 验证 必做 5 快速傅里叶变 快速傅里叶变换;用 FFT 分析信 号频率成分 2 1 验证 必做 IIR 滤波器的设 基本概念;求滤波器频率响应的 2 1 验证 必做 计 函数;ButterWorth(巴特沃斯)等模 2 1 验证 必做 换及其应用 6 拟和数字滤波器的设计 FIR 滤波器设 计 7 在 MATLAB 中产生窗函数的方 法;基本窗函数的 FIR 滤波器的 设计——标准频率响应形状。 7.教材及实验指导书名称: (1)实验教材: 丁玉美,数字信号处理(内附实验指导书) 。西安:西安电子科技大学出版 (2)教学参考书: ①程佩青,数字信号处理教程。北京:清华大学出版社,2014 ②刘舒帆,费诺等,数字信号处理实验。西安:西安电子科技大学出版社,2014 数字信号处理实验讲义 实验一 常见数字信号的 MATLAB 实现 1.实验目的 (1)掌握 MATLAB 语言基础知识。 (2)掌握 MATLAB 软件操作基础。 (3)利用 MATLAB 工具产生数字信号基本序列。 2.实验仪器及设备 (1)计算机一台。 (2)MATLAB6.5 以上软件一套。 3.实验任务及原理 实验任务 1:正弦序列 MATLAB 实现 离散正弦序列的 MATLAB 表示与连续信号类似,只不过是用 stem 函数,而不是用 plot 函数来绘出序列的波形。编写程序段绘出正弦序列 sin( π 12 k)的波形。 %正弦信号的离散序列 k=0:39; m=sin(pi/12*k); stem(k, fk); 运行结果如图 1-1 所示。 图 1-1 离散正弦信号 sin( π 12 k )的波形 实验任务 2:随机信号的 MATLAB 实现 在区间(0,1)中均匀分布的长度为 N 的随机信号,可通过如下的 MATLAB 命令生成: x=rand(1,N) 使用下面的 MATLAB 命令,可生成长度为 N 且具有零均值和单位方差的正态分布的随 机信号 x[n]: x=randn(1,N) 编程绘出一个随机信号的波形。 N=50; n=1:N; x=rand(1,N); stem(n,x); title(’随机序列’); xlabel(’时间序列 n’); ylabel(’振幅’): 运行结果如图 1-2 之所示。 图 1-2 随机序列 实验任务 3: 指数信号的 MATLAB 实现 指数信号也是一种基本的离散时间序列,生成指数信号要用到 MATLAB 运算符 .^和 exp。 ①绘出实指数序列 x(n)=0.2 • 2 n 的波形。 %生成一个实指数序列 n=1:10; a=2; K=0.2; x=K*a.^n; stem(n,x); xlabel(’时间序列 n’); ylabel(’振幅’); 运行结果如图 1-3 所示。 图 1-3 实指数序列 ②绘出复指数序列 x(n)=2 e 1 π (− + i)n 6 6 的波形。 %生成一个复指数序列 c= -1/6+(pi/6)*i; K=2; n=0:20; x=K*exp(c*n); subplot(2,1,1); stem(n,real(x)); xlabel(’时间序列 n’); ylabel(’振幅’); title(’实部’); subplot(2,1,2); stem(n,imag(x)); xlabel(’时间序列 n’); ylabel(’振幅’); title(’虚部’); 运行结果如图 1-4 所示。 图 1-4 复指数序列 实验任务 4:单位冲激序列 单位冲激序列δ(n)可以通过 MATLAB 中的零矩阵函数 zeros 得到。 绘出单位冲激序列δ(n)的波形。 %得到单位冲激序列 k=1:30; delta=[1,zeros(1,length(k)-1)]; stem(k,delta); title(’单位冲激序列’); 运行结果如图 1-5 所示。 图 1-5 单位冲激序列 实验任务 5:单位阶跃序列 可以通过 MATLAB 中的单位矩阵函数 ones,来生成一个只含有元素 1 的行向量,对有 限区问的单位阶跃序列μ(n)可以通过下面的程序来实现。绘出单位阶跃序列μ(n)的波形。 %生成单位阶跃序列 stepl=20; step2=20; k= -stepl:step2; uk=[zeros(1,stepl),ones(1,step2+1)]; stem(k,uk) ; title(’ 单位阶跃序列’) ; 运行结果如图 1-6 所示。 图 1-6 单位阶跃序列 实验二 离散序列的卷积和系统差分方程的 MATLAB 实现 1.实验目的 (1)熟悉 MATLAB 对卷积和系统差分方程的程序设计。 (2)掌握卷积方法和原理。 (3)掌握离散系统差分方程的 MATLAB 实现。 2.实验仪器及设备 (1)计算机一台。 (2)MATLAB6.5 以上软件一套。 3.实验内容 (1)卷积定理计算及验证 实验任务 1:编写程序实现卷积的计算 在 MATLAB 中,提供了卷积函数 conv,即 y=conv(x,h),调用十分方便。 n=1:50; % 定义序列的长度是 50 hb=zeros(1,50); % 注意:MATLAB 中数组下标从 1 开始 hb(1)=1; hb(2)=2.5; hb(3)=2.5; hb(4)=1; close all; subplot(3,1,1);stem(hb);title('系统 hb[n]'); m=1:50; % 定义序列的长度 T=0.001; % 定义序列的采样率 A=444.128; %设置信号有关的参数 a=50*sqrt(2.0)*pi; w0=50*sqrt(2.0)*pi; x=A*exp(-a*m*T).*sin(w0*m*T); %pi 是 MATLAB 定义的π,信号乘可采用“.* ” subplot(3,1,2);stem(x);title('输入信号 x[n]'); y=conv(x,hb); subplot(3,1,3);stem(y);title('输出信号 y[n]'); 运行结果如图 2-1 所示。 图 2-1 卷积计算 实验任务 2:卷积定律验证 编写程序验证卷积定理 n=1:50; % 定义序列的长度是 50 hb=zeros(1,50); % 注意:MATLAB 中数组下标从 1 开始 hb(1)=1; hb(2)=2.5; hb(3)=2.5; hb(4)=1; m=1:50; % 定义序列的长度 T=0.001; % 定义序列的采样率 A=444.128; %设置信号有关的参数 a=50*sqrt(2.0)*pi; w0=50*sqrt(2.0)*pi; x=A*exp(-a*m*T).*sin(w0*m*T); y=conv(x,hb); k=-25:25; X=x*(exp(-j*pi/12.5)).^(n'*k); %pi 是 MATLAB 定义的π,信号乘可采用“.* ” % 绘制 x(n) 的幅度谱 magX=abs(X); subplot(3,2,1);stem(magX);title('入信号的幅度谱'); % 绘制 x(n) 的相位谱 angX=angle(X); subplot(3,2,2);stem(angX) ; title ('输入信号的相位谱') Hb=hb*(exp(-j*pi/12.5)).^(n'*k); % 绘制 hb(n) 的幅度谱 magHb=abs(Hb); subplot(3,2,3);stem(magHb);title('系统响应的幅度谱'); % 绘制 hb(n) 的相位谱 angHb=angle(Hb); subplot(3,2,4);stem(angHb) ; title ('系统响应的相位谱') ; n=1:99; k=1:99; Y=y*(exp(-j*pi/12.5)).^(n'*k); % 绘制 y(n) 的幅度谱 magY=abs(Y); subplot(3,2,5);stem(magY);title('输出信号的幅度谱'); angY=angle(Y); % 绘制 y(n) 的相位谱 subplot(3,2,6);stem(angY) ; title ('输出信号的相位谱') 运行结果如图 2-2 所示。 图 2-2 卷积定理输出图 (2)离散系统差分方程的 MATLAB 实现 对于时域离散系统,可用差分方程描述或研究输入、输出之间的关系。对于线性时不变 系统,经常用的是线性常系数差分方程。一个 N 阶线性常系数差分方程用下式表示: N M ∑ b y (n − i ) = ∑ a x(n − i ) i =0 i i =0 i 当 bi =0,i=1,2,…,N 时,h[n]是有限长度的,称系统为 FIR 系统,反之称系统为 IIR 系统。在 MATLAB 中,可以用函数 filer(a,b,x)求解差分方程,其中参数 a,b 分别表示 系统函数的分子和分母多项式的系数。 实验任务 3:求系统的单位冲激响应和阶跃响应。 给出系统: y (n) + 0.75 y (n − 1) + 0.125 y (n − 2) = x(n) − x(n − 1) 的单位冲激响应和阶 跃响应。 %差分方程求解 N=21; a=[1,-1]; b=[1,0.75,0.125]; x1=[1 zeros(1,N-1)]; x2=ones(1,N); k=0:1:N-1; h=filter(a,b,x1); y=filter(a,b,x2); subplot(1,2,1);stem(k,h,'.');xlabel('n');ylabel('单位冲激响应');grid on; subplot(1,2,2);stem(k,y,'.');xlabel('n');ylabel('单位阶跃响应');grid on; 运行程序将产生如图 2-3 所示序列。 图 2-3 差分方程求解 实验任务 4:一个三阶低通滤波器由下面差分方程描述: y(n)=0.0181x(n)+0.0543x(n-1)+0.0181x(n-3) +1.76y(n-1)-1.1829y(n-2)+0.2781y(n-3) 画出这个滤波器的幅度和相位响应。 %系统频响 a=[0.0181,0.0543,0.0543,0.0181]; b=[1.0000,-1.7600,1.1829,-0.2781]; m=0:length(a)-1;l=0:length(b)-1; N=500; k=0:1:N; w=pi*k/N; num=a*exp(-j*m'*w); %分子 den=b*exp(-j*l'*w); %分母 H=num./den; %频响 magH=abs(H);angH=angle(H); subplot(1,2,1);plot(w/pi,magH);xlabel('frequency in units of pi'); ylabel('|H|');grid on; subplot(1,2,2);plot(w/pi,angH);xlabel('frequency in units of pi'); ylabel('phase in pi radians');grid on; 将产生如图 2-4 所示序列 图 2-4 差分方程所表示的系统频响 实验 3 Z 变换和系统频域特性的 MATLAB 实现 1.实验目的 (1)学习通过 MATLAB 实现 Z 变换来分析离散系统的频率响应。 (2)加深对离散系统的零、极点分布概念的理解。 2.实验仪器及设备 (1)计算机一台。 (2)MATLAB6.5 以上软件一套。 3.实验任务及原理 (1) 通过 Z 变换分析求解系统的冲激响应 h(n) 已知用线性常系数差分方程: y (n) = N M k =1 r =0 ∑ ak y(n − k ) + ∑ br x(n − r ) 表示的线性时不变 系统其系统函数为: M H ( z) = Y ( z) = X ( z) ∑b z r =0 N −r r 1 − ∑ ak z (3-1) −k k =1 −1 式(3-1)为两个关于 z 的多项式之比,即 H(z)为有理分式。 将式(3-1)表小数部分分式的形式 M −N Rk + Ck z − k ∑ −1 k =1 1 − pk z k =0 N H ( z) = ∑ 则可以根据所熟悉的常见序列的 z 变换形式求得 H(z)的 z 反变换,从而得到系统冲激响 应函数 h(n)。 MATLAB 提供了一个内部函数 residuez( )来计算有理多项式的留数和直接项, residuez( )函数有几种调用方式:①[R,p,C]=residuez(b,a)。在已知以分子行向量 b 和分母行向量 a 下,得到列向量 R 含有留数,列向量 P 是极点位置,行向量 C 包含直接项; ②[b,a]=residuez(R,p,C),将部分分式展开式转换到分子行向量 b 和分母行向量 a。 MATLAB 还提供了一个内部函数 impz(b,a,N) ,在已知分子行向量 b 和分母行向量 a 下,计算 N 点的单位采样 h(n)。 实验任务 1:求系统的单位采样响应 求系统 H ( z) = 0.001836 + 0.007344 z −1 + 0.0011016 z −2 + 0.007374 z −3 + 0.001836 z −4 1 − 3.0544 z −1 + 3.8291z − 2 − 2.2925 z −3 + 0.55075 z − 4 的单位采样响应 h(n)。 解:由上述基本原理和 MATLAB 提供的函数,编写程序可得到所求系统的冲激响应 h(n)。 % h(n)求解 b=[0.001836,0.007344,0.011016,0.007374,0.001836]; a=[1,-3.0544,3.8291,-2.2925,0.55075]; [h,n]=impz(b,a,40); stem(n,h,'.');ylabel('h[n]');grid 运行程序将产生如图 3 -l 所示图形。 0.25 0.2 0.15 h[n] 0.1 0.05 0 -0.05 -0.1 0 5 10 15 20 25 30 35 图 3-1 系统冲激响应 实验任务 2: 求 X ( z ) = 解: X ( z ) = z (1<|z|<∞)的 z 反变换。 3z − 4 z + 1 2 z −1 z = 3 z 2 − 4 z + 1 3 − 4 z −1 + z − 2 由上述基本原理和 MATLAB 提供的函数,编写程序来求 z 反变换。 % z 反变换求解 b=[0,1,0];a=[3,-4,1]; [R,p,C]=residuez(b,a) [b,a]=residuez(R,p,C) 运行结果如下: R= 0.5000 -0.5000 p= 1.0000 0.3333 C= 0 b= -0.0000 0.3333 0 a= 40 1.0000 -1.3333 0.3333 >> 1/ 2 1/ 2 z −1 因此得到因式分解后的 X ( z ) = ,所以 z 变换的结 − = −1 −2 −1 3 − 4z + z 1− z 1 − 1 / 3 z −1 1 n 3 果为 x(n) = 1 / 2u (n) − 1 / 2( ) u (n) 。 (2)通过 z 变换分析离散系统的频率响应和零、极点分布 将式(3-1)表示的 H(z)的分子、分母进行因式分解。可采用根的形式表示多项式,即 M H ( z) = A∏ (1 − cr z −1 ) r =1 N ∏ (1 − d z ) −1 k k =1 其中 cr 为分子多项式的根,称为系统函数的零点, d k 为分母多项式的根,称为系统函 数的极点,A 为比例常数。这样系统函数就表示了零极点的形式,零极点在 z 平面的位置刻 画了系统很重要的特性,可以通过系统函数零极点位置估算系统函数的频率响应,进而判断 系统的滤波特性,这是一种非常实用的方法,也称为频率响应的几何确定法。 根据频率响应的定义,将 z = e jω 代人上式,系统的频率响应为 H ( e j ω ) = H ( z ) | z = e jω MATLAB 提供了一个内部函数 zplane(b,a),在已知系统函数的分子行向量 d 和分母 行向量 a 下,画出极点和零点。 MATLAB 还提供了一个内部函数 freqz( )来求系统的频率响应,freqz( )函数有几种调用 方式:①[H,w]=freqz(h,a,N),在已知以分子行向量 b 和分母行向量 a 下得到 N 点的频 率向量 w 和 N 点的系统复频率响应向量 H,频率响应在单位圆的上半圆的 N 个等分点上求 值;②[H,wJ=freqz(b,a,N,’whole’),在已知以分子行向量 b 和分母行向量 a 下得到 N 点 的频率向量 w 和 N 点的系统复频率响应向量 H,频率响应用环绕整个单位圆的 N 个等分点 上求值;③H= frcqz(b,a,w),在已知以分子行向量 b 和分母行向量 a 下得到在频率向量 w 上的频率响应向量 H。 实验任务 3:画出因果系统 y (n) = 0.9 y (n − 1) + x(n) 的零、极点图和频率响应曲线,并求 出脉冲响应 h(n)。 解:由上述基本原理和 MATLAB 提供的函数,编写程序可得到所求系统的零、极点图 和频率响应, %y(n)=0.9y(n-1)+x(n)求解 b=[1,0];a=[1,-0.9]; subplot(2,2,1);zplane(b,a); [H,w]=freqz(b,a,100); magH=abs(H);phaH=angle(H); subplot(2,2,3);plot(w/pi,magH);grid xlabel('frequency in pi units');ylabel('magnitude');title('magnitude respense'); subplot(2,2,4);plot(w/pi,phaH/pi) xlabel('frequency in pi units');ylabel('phase');title('phase respense'); [h,n]=impz(b,a,40); subplot(2,2,2);stem(n,h,'.');ylabel('h[n]');grid 运行程序将产生如图 3-2 所示图形。 图 3-2 系统零、极点及频率响应曲线 实验任务 4:定性画出系统 H ( z ) = 1 − z − N 的零、极点图和频率响应曲线。 解:由上述基本原理和 MATLAB 提供的函数,编写程序可得到所求系统的零、极点图和频 率响应。 % H(z)=1-z-n N=8; b=[1,0,0,0,0,0,0,0,-1];a=[1,0,0,0,0,0,0,0,0]; subplot(1,3,1); zplane(b,a); title('极点-零点图'); %text(0.01,-0.1,'0'); %text(0.01,-0.1,'0'); [H,w]=freqz(b,a,100); magH=abs(H); phaH=angle(H); subplot(1,3,2);plot(w/pi,magH);grid xlabel('frequency in pi units');ylabel('magnitude'); title('magnitude response'); subplot(1,3,3);plot(w/pi,phaH/pi) xlabel('frequency in pi units');ylabel('phase'); title('phase response'); %[h,n]=impz(b,a,40); %subplot(2,2,2);stem(n,h,'.');ylabel('h[n]');grid 运行程序将产生如图 3-3 所示的图形。 图 3-3 零,极点及频率响应图 实验四 离散傅里叶变换(DFT)的 MATLAB 实现 1.实验目的 (1)熟悉 MATLAB 编程技术。 (2)掌握 MATLAB 实现离散傅里叶变换(DFT)的方法。 2.实验仪器及设备 (1)计算机一台。 (2)MATLAB6.5 以上软件一套。 3.实验任务及原理 实验任务 1:离散傅里叶变换及基本性质 (1)离散傅里叶变换 傅里叶变换是建立在以时间为自变量的“信号”和以频率为自变量的“频率函数”之间的 某种变换关系。离散傅里叶变换(DFT)就是傅里叶变换在时间域和频率域都离散时的情形。 设 x(n)为长度为 N 的有限长序列,则该序列的傅里叶变换及其逆变换分别为 N −1 X (k ) = DFT ( x(n)) = ∑ x(n)WN nk ,k=0,1,…,N-1, n =0 1 N −1 x(n) = IDFT ( X (k )) = ∑ X (k )WN− nk , k=0,1,…,N-1, N k =0 其中 WN = e −j 2π N 通过定义,不难写出其 MATLAB 程序。 例:已知序列 x(n)=(1,2,4,5,6,7,8,10),求 x(n)的傅里叶变换 DFT 及其傅里 叶逆变换 IDFT,并画出原信号 x(n)与其傅里叶逆变换 IDFT[X(k)]的图形进行比较。 MATLAB 程序如下: x=[1,2,4,5,6,7,8,10]; %建立信号 x(n) N=length(x); %信号长度 n=0:N-1;k=0:N-1; X=x*exp(-j*2*pi/N).^(n’*k); %离散傅里叶变换 x1=X*exp(j*2*pi/N).^(n’*k)/N; %离散傅里叶逆变换 figure(1),stem(n,x); %显示原信号 title(’x(n)’); figure(2),stem(n,abs(x1)); %显示逆变换结果 title(’IDFT| X(k) |’); 程序执行结果如图 4-1 所示。 图 4-1 离散傅里叶变换 (2)离散傅里叶变换的基本性质 DFT 有很多重要性质,在信号处理中有着广泛的应用。最常见的性质有:线性特性、 序列的圆周移位性质、循环对称性质、循环折叠性质。下面将给出这些基本性质的 Matlab 程序。 ①线性特性 若两个有限长序列 x1 (n)和 x2 (n)的线性组合为 x3 (n)=a x1 (n)+b x2 (n), 则有 DFT( x3 (n))=aDFT( x1 (n))+bDFT( x2 (n)),式中 a,b 为任意常数。 实验任务 2:已知 x1 (n)=(0,1,3,4,5), x2 (n)=(1,2,1,2,1,5)。 (1)求 y (n)=2 x1 (^)+3 x2 (n),再由 y (n)的 N 点 DFT 获得 Y(k)。 (2)由 x1 (n), x2 (n)求 X 1 (k), X 2 (%),再求 Y(I)= x1 (k)+ x2 (k)。 用图形分别表示以上结果,将两种方法求得的 Y(k)进行比较。 MATLAB 程序如下: xn1 =[0,1,3,4,5]; %建立 xnl 序列 xn2 =[1,2,1,2,1,5]; %建立 xn2 序列 N=max(length(xnl),length(xn2)); %确定和序列的长度 if length(xnl)>length(xn2) %对长度短的序列补 0,保征两个序列可加 xn2=[xn2, zeros(1,length(xn1)-length(xn2))]; else xn1=[xn1, zeros(1,length(xn2)-length(xn1))]; yn=2*xn1+3*xn2; %计算 yn n=0:N-1;k=n; Ykl=yn*exp (-j*2*pi/N).^(n'*k); %求 yn 的傅里叶变换 Xkl=xnl*exp (-j*2*pi/N).^(n'*k); Xk2=xn2*exp (-j*2*pi/N).^(n'*k); Yk2=Xkl+Xk2; subplot(3,2,1),stem(n,xnl) title(’xl(n)’); subplot(3,2,2),stem(n,Xkl); title(’X1(k)’); subplot(3,2,3),stem(n,xn2); title(’x2(n)’); subplot(3,2,4),stem(n,Xkl); title(’X2(k)’); subplot(3,2,5),stem(n,Ykl); title(’DFT(2*x1(n)+3*x2(n))’); subplot(3,2,6),stem(n,Yk2); tide(’2*X1(k)+3*X2(k)’); 程序执行结果如图 4-2 所示。 %求 xnl 的傅里叶变换 %求 xn2 的傅里叶变换 %计算 Yk 图 4-2 离散傅里叶变换的线性特性 ②序列的圆周移位性质 有限长序列 x(n)的圆周移位是:以它的长度 N 为周期,将其延拓成周期序列 x* (n),并 将周期序列进行移位,然后取主值区间上的序列值。设序列 z(n)右移 m 位的过程如下: I 、将 x(n)以 N 为周期进行周期延拓,得到序列 x*(n)=x(N)。 II、将 x*(n)右移 m 位,得到 x*(n-m)。 III、取 x*(n-m)的主值序列,得到 x(n)的循环移位序列 y(n)。 1 0≤ n ≤ N −1 因此,就有 y(n)= x(< n − m > N )GN (n) ,GN (n) = {0 其他 ,有了圆周移位的概念后, 我们有下面两个重要的定理。 时域移位定理 若 DFT(x(n))=X(k),y(n)=x( < n − m > N ) GN (n),则 DFT(y(n))=W mk X(k) . 频域移位定理 若 DFT(x(n))=X(k),Y(k)=X( < k − m > N ) GN (k),则 DFT(Y(k))=x(n)W − nm 实验任务 3:已知有限长序列 x(n)=(2,3,4,5,1,7,9),设 y(n)为 x(n)右移 2 位得到的 新序列。 (1) 根据圆周移位的定义,求出 y(n),再由 y(n)的 N 点 DFT 获得 Y1(k)。 (2) 先求出 x(n)的 N 点 DFTX(k),再由时域移位定理获得 y(n)的 N 点 DFTY2(k)。 用图形分别表示以上结果,将 Y1(k)和 Y2(k)进行比较。 MATLAB 程序如下: xn=[2,3,4,5,l,7,9]; %建立 x(n)序列 Nx=length(xn); nx=1:Nx-1: nxl=-Nx:2*Nx-1: xl=xn(mod(nxl,Nx)+1); %建立周期延拓序列 nyl=nxl+2; yl=xl; yn=[]; for i=1:length(nyl) %建立 Y(n)序列 if(nyl(i)>=0)&(nyl(i)W 2 ) 、ftype 是滤波器的类型(低 通—省略、高通—ftype=high、带阻—ftype=stop) 、window 是窗函数,默认为海明窗。 实验任务 1: 利用矩形窗设计一个长度为 8、截止频率为 0.4Hz 的线性相位 FIR 滤波器。 window=boxcar(8); b=fir1(7,0.4,window); freqz(b,1); 运行得幅频相频特性如图 7-1 所示: 图 7-1 利用矩形窗的 FIR 滤波器幅频相频特性 实验任务 2: 利用布拉克曼窗设计一个长度为 8、截止频率为 0.4Hz 的线性相位 FIR 滤波器。 window=blackman(8); b=fir1(7,0.4,window); freqz(b,1); 运行得幅频相频特性如图 7-2 所示: 图 7-2 利用布拉克曼窗设计的 FIR 滤波器幅频相频特性 实验任务 3: 设计线性相位 FIR 带通滤波器,其长度 N=16,上下边带截止频率分别为 W 1 =0.3 Π,W 2 =0.5Π window=blackman(16); b=fir1(15,[0.3 0.5],window); freqz(b,1); 运行得幅频相频特性如图 7-3 所示: 图 7-3 线性相位 FIR 带通滤波器的幅频相频特性

相关文章