文档详情

基于MATLAB的数字信号处理的模拟与仿真.doc

发布:2017-08-12约7.45千字共20页下载文档
文本预览下载声明
基于MATLAB 的数字信号处理的模拟与仿真 王靖斌 山东农业大学信息科学与工程学院,山东泰安(371018) 摘 要:本文介绍了数字信号处理中各种算法基本原理,包括Z 变换、DFT 变换及其快速 算法FFT 等信号变换算法和包括IIR 与FIR 数字滤波器的设计与实现,详细论述了利用 MATLAB 软件对信号变换和设计数字滤波器的原理﹑ 步骤和实现方法,并给出了基于 MATLAB 的模拟与仿真。文章最后给出了实验结果,并就其结果做了进一步的解释和说明。 关键词:Z 变换,离散傅立叶变换DFT,数字滤波器,系统结构仿真 1.引言 数字信号处理(Digital Signal Processing,DSP)是一门交叉性的学科,它的理论基础涉 及信息、通信、雷达、航空航天及生物医药等众多学科领域,其成果又为这些学科的发展起 着重要的促进作用。 MATLAB 是数字信号处理技术实现的重要手段。MATLAB 提供了信号处理工具箱, MATLAB 信号处理工具箱随着信号处理理论与方法的发展而发展,同时又为信号处理理论 与方法的实现与工程应用提供了有效的帮助。本文基于MATLAB 实现了数字信号处理的信 号变换模拟与滤波器设计仿真。 2.信号变换的各种算法 2.1 Z 变换的算法原理及MATLAB 实现 若序列为x(n),则z 变换为 这种变换将离散系统的差分方程转化为简单的代数方程。以一个简单的差分方程为例, 用MATLAB 实现z 变换: 系统的差分方程为: y(n)-2y(n-1)+3y(n-2)=4u(n)-5u(n-1)+6u(n-2)-7u(n-3) 其初始条件为x(-1)=1,x(-2)=-1,y(-1)=-1,y(-2)=1,求系统的输出y(n). MATLAB 程序如下所示: clear all; close all; clc; b=[4,-5,6,-7]; a=[1 -2 3]; x0=[1 -1]; y0=[-1 1]; xic=filtic(b,a,y0,x0) bxplus=1; axplus=[1 -1]; ayplus=conv(a,axplus) byplus=conv(b,bxplus)+conv(xic,axplus) [R,P,K]=residuez(byplus,ayplus) Mp=abs(P) Ap=angle(P)*180/pi N=100; n=0:N-1; xn=ones(1,N); yn=filter(b,a,xn,xic); plot(n,yn) 运行结果如下: xic = -16 16 -7 ayplus = 1 -3 5 -3 byplus = -12 27 -17 0 R = -5.5000 - 1.0607i -5.5000 + 1.0607i -1.0000 P = 1.0000 + 1.4142i 1.0000 - 1.4142i 1.0000 K = 0 Mp = 1.7321 1.7321 1.0000 Ap = 54.7356 -54.7356 0 输出相应曲线如下图所示 图1.差分方程的输出结果 2.2 离散傅立叶变换(DFT) 2.2.1 DFT 的算法原理及MATLAB 实现 对N 点有限长序列x(n),其正变换为 其逆变换为 下面用MATLAB 实现傅立叶变换及其逆变换: 离散傅立叶变换的MATLAB 实现 function[Xk]=dft(xn,N) Xk=在0=k=N-1 间的DFT 系数数组 xn=N 点有限长度序列 N=DFT 的长度 n=[0:1:N-1]; %n的行向量 k=[0:1:N-1]; %k的行向量 WN=exp(-j*2*pi/N); %Wn因子 nk=n*k; %产生一个含nk 值的N 乘N 维矩阵 WNnk=WN.^nk; %DFT矩阵 Xk=xn*WNnk; %DFT 系数的行向量 离散傅立叶逆变换的MATLAB 实现: Function[xn]=idft(Xk,N) xn=在0=k=N-1 间的N 点有限长度序列 Xk=在0=k=N-1 间的DFT 系数数组 N=DFT 的长度 n=[0:1:N-1]; k=[0:1:N-1]; WN=exp(-j*2*pi/N); nk=n*k; WNnk=WN.^(-nk); xn=(Xk*WNnk)/N; 以一个有限序列为例,计算它的傅立叶变换: 若x(n)=sin(nΠ/4)是一个N=32 的有限序列,实现它的傅立叶变换的MATLAB 程序如下: clear all; close all; clc; N=32; n=0:N-1; xn=cos(pi*n/6); k=0:N-1; WN=exp(-j*2*pi/N); nk=n*k; WNnk=WN.^nk; Xk=xn*WNnk; figu
显示全部
相似文档