文档库 最新最全的文档下载
当前位置:文档库 › 数字信号处理实验一

数字信号处理实验一

数字信号处理实验一
数字信号处理实验一

第1章 MATLAB软件简介

1.1 MATLAB软件在信号与系统中的应用介绍

MA TLAB的名称源自Matrix Laboratory,1984年由美国Mathworks公司推向市场。它是一种科学计算软件,专门以矩阵的形式处理数据。MA TLAB将高性能的数值计算和可视化集成在一起,并提供了大量的内置函数,从而被广泛地应用于科学计算、控制系统、信息处理等领域的分析、仿真和设计工作。1993年MathWorks公司从加拿大滑铁卢大学购得MAPLE软件的使用权,从而以MAPLE为“引擎”开发了符号数学工具箱(Symbolic Math Toolbox)。

MA TLAB软件包括五大通用功能:数值计算功能(Nemeric);符号运算功能(Symbolic);数据可视化功能(Graphic);数据图形文字统一处理功能(Notebook)和建模仿真可视化功能(Simulink)。其中,符号运算功能的实现是通过请求MAPLE内核计算并将结果返回到MA TLAB命令窗口。该软件有三大特点:一是功能强大;二是界面友善、语言自然;三是开放性强。目前,Mathworks公司已推出30多个应用工具箱。MA TLAB在线性代数、矩阵分析、数值及优化、数理统计和随机信号分析、电路与系统、系统动力学、信号和图像处理、控制理论分析和系统设计、过程控制、建模和仿真、通信系统、以及财政金融等众多领域的理论研究和工程设计中得到了广泛应用。

MA TLAB在信号与系统中的应用主要包括符号运算和数值计算仿真分析。由于信号与系统课程的许多内容都是基于公式演算,而MA TLAB借助符号数学工具箱提供的符号运算功能能基本满足信号与系统课程的需求。例如,解微分方程、傅里叶正反变换、拉普拉斯正反变换、z正反变换等。MA TLAB在信号与系统中的另一主要应用是数值计算与仿真分析,主要包括函数波形绘制、函数运算、冲激响应与阶跃响应仿真分析、信号的时域分析、信号的频谱分析、系统的S域分析、零极点图绘制等内容。数值计算仿真分析可以帮助学生更深入理解信号与系统的理论知识,并为将来使用MA TLAB进行信号处理领域的各种分析和实际应用打下基础。

1.2 MATLAB软件使用入门

1.2.1 MATLAB软件的环境介绍

MA TLAB 6.5的工作桌面由标题栏、菜单栏、工具栏、命令窗口(Command Window)、工作空间窗口(Workspace)、当前目录窗口(Current Directory)、历史命令窗口(Command History)及状态栏组成,从而为用户使用MA TLAB提供了集成的交互式图形界面,如图1-1所示。

MA TLAB 的命令窗口是接收用户输入命令及输出数据显示的窗口,几乎所有的MA TLAB 行为都是在命令窗口进行的。当启动MA TLAB 软件时,命令窗口就做好了接收指令和输入的准备,并出现命令提示符(>>)。在命令提示符后输入指令通常会创建一个或多个变量。变量可以是多种类型的,包括函数和字符串,但通常的变量只是数据。这些变量被放置在MA TLAB 的工作空间中,工作空间窗口提供了变量的一些重要信息,包括变量的名称、维数大小、占用内存大小、以及数据类型等信息。查看工作空间的另一种方法是使用whos 命令。在命令提示符后输入whos 命令,工作空间中的内容概要将作为输出显示在命令窗口中。

有的命令可以用来清除不必要的数据,同时释放部分系统资源。c lear 命令可以用来清除工作空间的所有变量,如果要清除某一特定变量则需要在clear 命令后加上该变量的名称。另外,clc 命令用来清除命令窗口的内容。

如果希望将MA TLAB 所创建的变量及重要数据保留下来,则使用save 命令,并在其后加上文件名,即可将整个工作空间保存为一个扩展名为.mat 的文件。使用load 命令,并在其后加上文件名,则可将MA TLAB 数据文件(.mat 文件)中的数据加载到工作空间中。MA TLAB 历史命令窗口记录了每次输入的命令。在该窗口中可以对以前的历史命令进行查看、复制或者直接运行。

对于初学者而言,需要掌握的最重要且最有用的命令应为help 命令。MA TLAB 命令和函数有数千个,而且许多命令的功能非常强大,调用形式多样。要想了解一个命令或函数,只需在命令提示符后输入help ,并加上该命令或函数的名称,则MA TLAB 会给出其详细帮助信息。另外,MA TLAB 还精心设计了演示程序系统(Demo ),内容包括MA TLAB 的内部主要函数和各个工具箱(Toolbox )的使用。初学者可以方便地通过这些演示程序及其给出的程序源代码进行直观的感受和学习。用户可以通过两种途径打开演示程序系统。一是在命令窗口中输入demo 或demos 命令并按Enter 键;二是选择“help ”→“Demos ”菜单命令。

图1-1 MA TLAB 的工作桌面

1.2.2 MATLAB 软件基本运算入门

1. MATLAB 软件的数值计算

(1)算术运算 MA TLAB 可以像一个简单的计算器一样使用,不论是实数运算还是复数运算都能轻松完成。标量的加法、减法、除法和幂运算均可通过常规符号“+”、“-”、“*”、“/”、以及“^”来完成。对于复数中的虚数单位,MA TLAB 采用预定义变量i 或j 表示,即i=j=1-。因

此,一个复常量可用直角坐标形式来表示,例如,

>>A=-3-i*4 A=

-3.0000 - 4.0000i

将复常量-3-i4赋予了变量A 。

一个复常量还可用极坐标的形式来表示,例如,

>>B=2*exp(i*pi/6) B=

1.7321 + 1.0000i

其中,pi 是MA TLAB 预定义变量,pi=π。

复数的实部和虚部可以通过real 和imag 运算符来实现,而复数的模和辐角可以通过abs 和angle 运算符来实现。但应注意辐角的单位为弧度。例如,复数A 的模和辐角、复数B 的实部和虚部的计算分别为

>>A_mag=abs(A) A_mag=

5

>>A_rad=angle(A) A_rad= -2.2143 >>B_real=real(B) B_real= 1.7321 >>B_imag=imag(B) B_imag= 1.0000

如果将弧度值用“度”来表示,则可进行转换,即

>>A_deg=angle(A)*180/pi A_deg= -126.8699

复数A 的模可表示为*

AA

A =

,因此,其共轭复数可通过conj 命令来实现,例如,

>>A_mag=sqrt(A*conj(A)) A_mag= 5

(2)向量运算

向量是组成矩阵的基本元素之一,MA TLAB具有关于向量运算的强大功能。一般地,向量被分为行向量和列向量。生成向量的方法有很多,我们主要介绍两种。

①直接输入向量:即把向量中的每个元素列举出来。向量元素要用“[ ]”括起来,元素之间可用空格、逗号分隔生成行向量,用分号分隔生成列向量。例如,

>>A=[1,3,5,21]

A=

1 3 5 21

>>B=[1;3;5;21]

B=

1

3

5

21

②利用冒号表达式生成向量:这种方法用于生成等步长或均匀等分的行向量,其表达式为x=x0:step:xn。其中,x0为初始值;step表示步长或增量;xn为结束值。如果step值缺省,则步长默认为1。例如,

>>C=0:2:10

C=

0 2 4 6 8 10

>>D=0:10

D=

0 1 2 3 4 5 6 7 8 9 10

在连续时间信号和离散时间信号的表示过程中,我们经常要用到冒号表达式。例如,对于1

≤t范围内的连续信号,可用冒号表达式“t=0:0.001:1;”来近似表达该区间,此时,0≤

向量t表示该区间以0.001为间隔的1001个点。

如果一个向量或一个标量与一个数进行运算,即“+”、“-”、“*”、“/”、以及“^”运算,则运算结果是将该向量的每一个元素与这个数逐一进行相应的运算所得到的新的向量。例如,

>>C=0:2:10;

>>E=C/4

E=

0 0.5000 1.0000 1.5000 2.0000 2.5000

其中,第一行语句结束的分号是为了不显示C的结果;第二句没有分号则显示出E的结果。

一个向量中元素的个数可以通过命令“length”获得,例如,

>>t=0:0.001:1;

>>L=length(t)

L=

1001

(3)矩阵运算

MA TLAB又称矩阵实验室,因此,MA TLAB中矩阵的表示十分方便。例如,输入矩阵

???

?

?

?????3332

31

232221131211在MA

TLAB 命令窗口中可输入下列命令得到,即 >>a=[11 12 13;21 22 23;31 32 33] a=

11 12 13 21 22 23 31 32 33

其中,命令中整个矩阵用括号“[ ]”括起来;矩阵每一行的各个元素必须用逗号“,”或空格分开;矩阵的不同行之间必须用分号“;”或者按Enter 键分开。

在矩阵的加减运算中,矩阵维数相同才能实行加减运算。矩阵的加法或减法运算是将矩阵的对应元素分别进行加法或减法运算。在矩阵的乘法运算中,要求两矩阵必须维数相容,

即第一个矩阵的列数必须等于第二个矩阵的行数。例如,

>>a=[1 2 3;4 5 6] a=

1 2 3 4 5 6 >>b=[1 2; 3 4;5 6] b= 1 2 3 4 5 6 >>c=a*b c=

22 28 49 64

MA TLAB 中矩阵的点运算指维数相同的矩阵位置对应元素进行的算术运算,标量常数可以和矩阵进行任何点运算。常用的点运算包括“.*”、“./”、“.\”、“.^”等。矩阵的加法和减法是在对应元素之间进行的,所以不存在点加法或点减法。

点乘运算,又称Hadamard 乘积,是指两维数相同的矩阵或向量对应元素相乘,表示为C=A.*B 。点除运算是指两维数相同的矩阵或向量中各元素独立的除运算,包括点右除和点左除。其中,点右除表示为C =A./B ,意思是A 对应元素除以B 对应元素;点左除表示为C =A.\B ,意思是B 对应元素除以A 对应元素。点幂运算指两维数相同的矩阵或向量各元素独立的幂运算,表达式为C =A.^B 。

【实例1-1】 已知t 为一向量,用MA TLAB 命令计算1

)cos(5

)sin(2

2+++=-t t e

t y t

在10≤≤t 区

间上对应的值。

解:表达式中的运算都是点运算,MA TLAB 源程序为

>>t=0:0.01:1;

>>y=(sin(t).*exp(-2*t)+5)./(cos(t)+t.^2+1); >>plot(t,y),xlabel('t'),ylabel('y')

这里,我们未将y向量的结果显示出来,而是利用plot命令将结果绘出图形来,如图1-2所示。

图1-2 实例1-1的结果

2. MATLAB软件的符号运算

MA TLAB符号运算工具箱提供的函数命令是专门研究符号运算功能的。符号运算是指符号之间的运算,其运算结果仍以标准的符号形式表达。符号运算是MA TLAB的一个极其重要的组成部分,符号表示的解析式比数值解具有更好的通用性。在使用符号运算之前必须定义符号变量,并创建符号表达式。定义符号变量的语句格式为

syms 变量名

其中,各个变量名须用空格隔开。例如,定义x、y、z三个符号变量的语句格式为>>syms x y z

我们可以用whos命令来查看所定义的符号变量,即

>>clear

>>syms x y z

>>whos

Name Size Bytes Class

x 1x1 126 sym object

y 1x1 126 sym object

z 1x1 126 sym object

Grand total is 6 elements using 378 bytes

可见,变量x、y、z必须通过符号对象定义,即sym object,才能参与符号运算。

另一种定义符号变量的语句格式为

sym('变量名')

例如,x、y、z三个符号变量定义的语句格式为

>>x=sym('x');

>>y=sym('y');

>>z=sym('z');

sym语句还可以用来定义符号表达式,语句格式为

sym('表达式')

例如,定义表达式x+1为符号表达式对象,语句为

>>sym('x+1');

另一种创建符号表达式的方法是先定义符号变量,然后直接写出符号表达式。例如,在MA TLAB 中创建符号表达式1

)cos(5

)sin(2

2+++=

-t t e

t y t

,其MA TLAB 源程序为

>>syms t

>>y=(sin(t).*exp(-2*t)+5)./(cos(t)+t.^2+1) y=

(sin(t)*exp(-2*t)+5)/(cos(t)+t^2+1)

例如,符号算术运算的MA TLAB 源程序为

>>clear >>syms a b >>f1=1/(a+1); >>f2=2*a/(a+b); >>f3=(a+1)*(b-1)* (a-b); >>f1+f2 ans=

1/(a+1)+2*a/(a+b) >>f1*f3 ans=

(b-1)*(a-b) >>f1/f3 ans=

1/(a+1)^2/(b-1)/(a-b)

在符号运算中,可以用“simple ”或者“simplify ”函数来化简运算结果,例如,

>>syms x >>f1=sin(x)^2; >>f2=cos(x)^2; >>y=f1+f2 y=

sin(x)^2+cos(x)^2 >>y=simplify(y) y= 1

1.2.3 MATLAB 软件简单二维图形绘制

MA TLAB 的plot 命令是绘制二维曲线的基本函数,它为数据的可视化提供了方便的途径。例如,函数)(x f y =关于变量x 的曲线绘制的语句格式为

>>plot(x,y)

其中,输出以向量x 为横坐标,向量y 为纵坐标,且按照向量x 、y 中元素的排列顺序有序绘制图形。但向量x 与y 必须拥有相同的长度。

绘制多幅图形的语句格式为

>>plot(x1,y1,'str1',x2,y2,'str2',...)

其中,用str1制定的方式,输出以x1为横坐标、y1为纵坐标的图形。用str2制定的方式,输出以x2为横坐标、y2为纵坐标的图形。若省略str ,则MA TLAB 自动为每条曲线选择颜色与线型。

图形完成后,可以通过几个命令来调整显示结果。如grid on 用来显示格线;axis([xmin,xmax,ymin,ymax])函数调整坐标轴的显示范围。其中,括号内的“,”可用空格代替;xlabel 和ylabel 命令可为横坐标和纵坐标加标注,标注的字符串必须用单引号引起来;title 命令可在图形顶部加注标题。

【实例1-2】 用MA TLAB 命令绘制函数2

)cos(1)10sin(++=t t y ππ的波形图。

解:MA TLAB 源程序为

>>t=0:0.01:5;

>>y=sin(5*pi*t)+1./(cos(pi*t)+2); >>plot(t,y) >>axis([0,5,-1 2,5]) >>xlabel('t'),ylabel('y'), >>grid on

程序运行结果如图1-3所示。

用subplot 命令可在一个图形窗口中按照规定的排列方式同时显示多个图形,方便图形的比较。其语句格式为

>>subplot(m,n,p)

或者

>>subplot(mnp)

其中,m 和n 表示在一个图形窗口中显示m 行n 列个图像,p 表示第p 个图像区域,即在第p 个区域作图。例如,比较正弦信号相位差的MA TLAB 源程序为

>>t=0:0.01:3; >>y1=sin(2*pi*t); >>y2=sin(2*pi*t+pi/6); >>subplot(211),plot(t,y1)

>>xlabel('t'),ylabel('y1'),title('y1=sin(2*pi*t)') >>subplot(212),plot(t,y2)

>>xlabel('t'),ylabel('y2'),title('y2=sin(2*pi*t+pi/6)')

程序运行结果如图1-4所示。

图1-3 实例1-2的函数波形图

除了plot 命令外,MA TLAB 提供了ezplot 命令绘制符号表达式的曲线,其语句格式为

>>ezplot(y, [a,b])

其中,[a ,b]参数表示符号表达式的自变量取值范围,默认值为]2,0[π。

【实例1-3】 利用MA TLAB 的ezplot 命令绘出函数9664162++-=x x y 的波形图。 解:MA TLAB 源程序为

>>syms x

>>y='-16*x^2+64*x+96'; >>ezplot(y,[0,5]) >>xlabel('t'),ylabel('y'), >>grid on

程序运行结果如图1-5所示。

在绘图过程中,我们可利用“hold on ”命令来保持当前图形,继续在当前图形状态下绘制其他图形,即可在同一窗口下绘制多幅图形。“hold off ”命令用来释放当前图形窗口,绘制下一幅图形作为当前图形。

图1-4 正弦信号相位差比较

1-5 实例1-3的函数波形图

1.2.4 M文件

MA TLAB是解释型语言,也就是说在MA TLAB命令行中输入的命令在当前MA TLAB 进程中被解释运行,无需编译和链接等。MA TLAB文件分为两类:M脚本文件(M-Script)和M函数(M-function),它们均为由ASCII码构成的文件,该文件可直接在文本编辑器中编写,称为M文件,保存的文件扩展名是.m。

M脚本文件包含一族由MA TLAB语言所支持的语句,并保存为M文件。它类似于DOS 下的批处理文件,不需要在其中输入参数,也不需要给出输出变量来接受处理结果。脚本仅是若干命令或函数的集合,用于执行特定的功能。其执行方式很简单,用户只需在MA TLAB 的提示符>>下键入该M文件的文件名,这样MA TLAB就会自动执行该M文件中的各条语句,并将结果直接返回到MA TLAB工作空间中。脚本M文件实际上是一系列MA TLAB命令的集合,它的作用与在MA TLAB命令窗口输入的一系列命令等效。

M函数文件不同于M脚本文件,是一种封装结构,通过外界提供输入量而得到函数文件的输出结果。函数是接受入口参数返回出口参数的M文件,程序在自己的工作空间中操作变量,与工作空间分开,无法访问。M函数文件和M脚本文件都是在编辑器中生成,通常以关键字function引导“函数声明行”,并罗列出函数与外界联系的全部“标称”输入输出宗量。它的一般形式为

fun ction [output 1, output 2,…] = functionname(input1, input2,…)

%[output 1, output 2,…] = functionname(input1, input2,…) Functionname

%Some comments that explain what the function does go here.

MA TLAB command 1;

MA TLAB command 2;

MA TLAB command 3;

……

该函数的M文件名是functionname.m,在MA TLAB命令窗口中可被其他M文件调用,例如,

>> [output1, output2] = functionname(input1, input2)

注意,MA TLAB忽略了“%”后面的所有文字,因此,可以利用该符号写注释。以“;”结束一行可以停止输出打印,在一行的最后输入“…”可以续行,以便在下一行继续输入指令。M函数格式是MA TLAB程序设计的主流,在一般情况下,不建议使用M脚本文件格式编程。

1.2.5 MATLAB程序流程控制

MA TLAB与其他高级编程语言一样,是一种结构化的编程语言。MA TLAB程序流程控制结构一般可分为顺序结构、循环结构、以及条件分支结构。MA TLAB中实现顺序结构的方法非常简单,只需将程序语句按顺序排列即可。在MA TLAB中,循环结构可以由for语句循环结构和while语句循环结构两种方式来实现。条件分支结构可以由if语句分支结构和switch语句分支结构两种方式来实现。下面我们主要介绍这几种程序流程控制。

1. for循环结构

for循环结构用于在一定条件下多次循环执行处理某段指令,其语法格式为

for 循环变量=初值:增量:终值

循环体

end

循环变量一般被定义为一个向量,这样循环变量从初值开始,循环体中的语句每被执行一次,变量值就增加一个增量,直到变量等于终值为止。增量可以根据需要设定,默认时为1。end代表循环体的结束部分。

例如,用for循环结构求1+2+3+…100的和,其MA TLAB源程序为

>>sum=0;

>>for i=1:100

sum=sum+i;

end

>>sumsum=

5050

2. while循环结构

while循环结构也用于循环执行处理某段指令,但是与for循环结构不同的是在执行循环体之前先要判断循环执行的条件是否成立,即逻辑表达式为“真”还是“假”,如果条件成立,则执行;如果条件不成立,则终止循环。其语法格式为

while 逻辑表达式

循环体

end

例如,用while循环结构求1+2+3+…100的和,其MA TLAB源程序为

>>sum=0;i=0;

>>while i<100

i=i+1;

sum=sum+i;

end

>>sum

sum=

5050

从上述MA TLAB源程序可以看出,while循环结构是通过判断逻辑表达式i<100是否为“真”,而决定是否执行循环体。

3. if分支结构

if条件分支结构是通过判断逻辑表达式是否成立来决定是否执行制定的程序模块。其语法格式有两种,一种是单分支结构;另一种为多分支结构。其中,单分支结构语法格式为if 逻辑表达式

程序模块

end

单分支结构语法格式的含义是,如果逻辑表达式为“真”,则执行程序模块,否则跳过该分支结构,按顺序结构执行下面的程序。

多分支结构的语法格式为

if 逻辑表达式1

程序模块1

else if 逻辑表达式2 (可选)

程序模块2

……

else

程序模块n

end

多分支结构语法格式可理解为:首先判断if条件分支结构中的逻辑表达式1是否成立,如果成立则执行程序模块1;否则继续判断else if条件分支结构中的逻辑表达式2,如果成立则执行程序模块2;依次下去,如果结构中所有条件都不成立,则执行程序模块n。

例如,用if条件分支结构可实现百分制考试分数分级,其MA TLAB源程序为

>>s=input('输入score= '); %屏幕提示输入x=,由键盘输入值赋给x

>>if s>=90

rank='A'

elseif s>=80

rank='B'

elseif s>=70

rank='C'

elseif s>=60

rank='D'

else

rank='E'

end

4. switch分支结构

switch分支结构是根据表达式的取值结果不同来选择执行的程序模块,其语法格式为switch 表达式

case 常量1

程序模块1

case 常量2

程序模块2

……

otherwise

程序模块n

end

其中,switch后面的表达式可以是任何类型,如数字、字符串等。当表达式的值与case后面的常量相等时,就执行对应的程序模块;如果所有常量都与表达式的值不等时,则执行otherwise后面的程序模块。

例如,用switch分支结构也可实现百分制考试分数分级,其MA TLAB源程序为

>>s=input('输入score= ');

>>switch fix(s/10) %利用fix函数舍去小数部分取最近整数

case {10,9}

rank='A'

case 8

rank='B'

case 7

rank='C'

case 6

rank='D'

otherwise

rank='E'

end

除了上述介绍的几种程序流程控制结构外,MA TLAB为实现交互控制程序流程还提供了continue、break、pause、input、error、disp等命令。读者可通过doc或者help命令查看它们的具体使用。

第2章 离散时间信号的表示及运算

2.1 实验目的

● 学会运用MA TLAB 表示的常用离散时间信号; ●

学会运用MA TLAB 实现离散时间信号的基本运算。

2.2 实验原理及实例分析

2.2.1 离散时间信号在MATLAB 中的表示

离散时间信号是指在离散时刻才有定义的信号,简称离散信号,或者序列。离散序列通常用)(n x 来表示,自变量必须是整数。

离散时间信号的波形绘制在MA TLAB 中一般用stem 函数。stem 函数的基本用法和plot 函数一样,它绘制的波形图的每个样本点上有一个小圆圈,默认是空心的。如果要实心,需使用参数“fill ”、“filled ”,或者参数“.”。由于MA TLAB 中矩阵元素的个数有限,所以MA TLAB

只能表示一定时间范围内有限长度的序列;而对于无限序列,也只能在一定时间范围内表示出来。类似于连续时间信号,离散时间信号也有一些典型的离散时间信号。

1. 单位取样序列

单位取样序列)(n δ,也称为单位冲激序列,定义为

)

0()0(0

1

)(≠=??

?=n n n δ(12-1)

要注意,单位冲激序列不是单位冲激函数的简单离散抽样,它在n =0处是取确定的值1。在MA TLAB 中,冲激序列可以通过编写以下的impDT .m 文件来实现,即

function y=impDT(n)

y=(n==0); %当参数为0时冲激为1,否则为0

调用该函数时n 必须为整数或整数向量。

【实例2-1】利用MA TLAB 的impDT 函数绘出单位冲激序列的波形图。 解:MA TLAB 源程序为

>>n=-3:3; >>x=impDT(n);

>>stem(n,x,'fill'),xlabel('n'),grid on >>title('单位冲激序列') >>axis([-3 3 -0.1 1.1])

程序运行结果如图12-1所示。

2. 单位阶跃序列

单位阶跃序列)(n u 定义为

)

0()0(0

1

)(<≥??

?=n n n u (12-2)

在MA TLAB 中,冲激序列可以通过编写uDT .m 文件来实现,即

function y=uDT(n)

y=n>=0; %当参数为非负时输出1

调用该函数时n 也同样必须为整数或整数向量。

【实例2-2】利用MA TLAB 的uDT 函数绘出单位阶跃序列的波形图。 解:MA TLAB 源程序为

>>n=-3:5; >>x=uDT(n);

>>stem(n,x,'fill'),xlabel('n'),grid on >>title('单位阶跃序列') >>axis([-3 5 -0.1 1.1])

程序运行结果如图12-2所示。

图2-1 单位冲激序列

图2-2 单位阶跃序列

3. 矩形序列

矩形序列)(n R N 定义为

)

,0()10(0

1

)(N n n N n n R N ≥<-≤≤??

?=(12-3)

矩形序列有一个重要的参数,就是序列宽度N 。)(n R N 与)(n u 之间的关系为

)()()(N n u n u n R N --=

因此,用MA TLAB 表示矩形序列可利用上面所讲的uDT 函数。

【实例2-3】利用MA TLAB 命令绘出矩形序列)(5n R 的波形图。 解:MA TLAB 源程序为

>>n=-3:8;

>>x=uDT(n)-uDT(n-5);

>>stem(n,x,'fill'),xlabel('n'),grid on >>title('矩形序列') >>axis([-3 8 -0.1 1.1])

程序运行结果如图2-3所示。

4. 单边指数序列

单边指数序列定义为

)()(n u a n x n

=(12-4)

【实例2-4】试用MA TLAB 命令分别绘制单边指数序列)(2.1)(1n u n x n

=、

)()2.1()(2n u n x n

-=、)()8.0()(3n u n x n

=、)()8.0()(4n u n x n

-=的波形图。

解:MA TLAB 源程序为

图2-3 矩形序列

>>n=0:10;

>>a1=1.2;a2=-1.2;a3=0.8;a4=-0.8; >>x1=a1.^n;x2=a2.^n;x3=a3.^n;x4=a4.^n; >>subplot(221)

>>stem(n,x1,'fill'),grid on >>xlabel('n'),title('x(n)=1.2^{n}') >>subplot(222)

>>stem(n,x2,'fill'),grid on

>>xlabel('n'),title('x(n)=(-1.2)^{n}') >>subplot(223)

>>stem(n,x3,'fill'),grid on >>xlabel('n'),title('x(n)=0.8^{n}') >>subplot(224)

>>stem(n,x4,'fill'),grid on

>>xlabel('n'),title('x(n)=(-0.8)^{n}')

单边指数序列n 的取值范围为0≥n 。程序运行结果如图12-4所示。从图可知,当1||>a 时,

单边指数序列发散;当1||a 时,该序列均取正值;当0

5. 正弦序列

正弦序列定义为

)sin()(0?ω+=n n x (12-5)

图2-4 单边指数序列

其中,0ω是正弦序列的数字域频率;?为初相。与连续的正弦信号不同,正弦序列的自变量n 必须为整数。可以证明,只有当

2ωπ

为有理数时,正弦序列具有周期性。

【实例2-5】试用MA TLAB 命令绘制正弦序列)6

sin()(πn n x =的波形图。

解:MA TLAB 源程序为

>>n=0:39; >>x=sin(pi/6*n);

>>stem(n,x,'fill'),xlabel('n'),grid on >>title('正弦序列') >>axis([0,40,-1.5,1.5]);

程序运行结果如图2-5所示。

6. 复指数序列

复指数序列定义为

n

j a e

n x )(0)(ω+=(2-6)

当0=a 时,得到虚指数序列n

j e n x 0

)(ω=,式中0ω是正弦序列的数字域频率。由欧拉公式

知,复指数序列可进一步表示为

)]sin()[cos()(00)(00ωωωωn j n e e

e e

n x an

n

j an

n

j a +===+(2-7)

与连续复指数信号一样,我们将复指数序列实部和虚部的波形分开讨论,得出如下结论:

(1)当0>a 时,复指数序列)(n x 的实部和虚部分别是按指数规律增长的正弦振荡序列;

(2)当0

的实部和虚部分别是按指数规律衰减的正弦振荡序

图2-5 正弦序列

列;

(3)当0=a 时,复指数序列)(n x 即为虚指数序列,其实部和虚部分别是等幅的正弦振荡序列。

【实例2-6】用MA TLAB 命令画出复指数序列n

j

e n x )6

101(2)(π

+-

=的实部、虚部、模及

相角随时间变化的曲线,并观察其时域特性。

解:MA TLAB 源程序为

>>n=0:30;

>>A=2;a=-1/10;b=pi/6; >>x=A*exp((a+i*b)*n); >>subplot(2,2,1)

>>stem(n,real(x),'fill'),grid on

>>title('实部'),axis([0,30,-2,2]),xlabel('n') >>subplot(2,2,2)

>>stem(n,imag(x),'fill'),grid on

>>title('虚部'),axis([0,30,-2,2]) ,xlabel('n') >>subplot(2,2,3)

>>stem(n,abs(x),'fill'),grid on >>title('模'),axis([0,30,0,2]) ,xlabel('n') >>subplot(2,2,4)

>>stem(n,angle(x),'fill'),grid on

>>title('相角'),axis([0,30,-4,4]) ,xlabel('n')

程序运行后,产生如图2-6所示的波形。

图2-6 复指数序列

2.2.2 离散时间信号的基本运算

对离散时间序列实行基本运算可得到新的序列,这些基本运算主要包括加、减、乘、除、移位、反折等。两个序列的加减乘除是对应离散样点值的加减乘除,因此,可通过MA TLAB 的点乘和点除、序列移位和反折来实现,与连续时间信号处理方法基本一样。

【实例2-7】 用MA TLAB 命令画出下列离散时间信号的波形图。

(1)()()()[]N n u n u a n x n --=1; (2)()()312+=n x n x (3)()()213-=n x n x ;

(4)()()n x n x -=14

解:设8.0=a ,8=N ,MATLAB 源程序为

>>a=0.8;N=8;n=-12:12; >>x=a.^n.*(uDT(n)-uDT(n-N)); >>n1=n;n2=n1-3;n3=n1+2;n4=-n1; >>subplot(411)

>>stem(n1,x,'fill'),grid on >>title('x1(n)'),axis([-15 15 0 1]) >>subplot(412)

>>stem(n2,x,'fill'),grid on >>title('x2(n)'),axis([-15 15 0 1]) >>subplot(413)

>>stem(n3,x,'fill'),grid on >>title('x3(n)'),axis([-15 15 0 1]) >>subplot(414)

>>stem(n4,x,'fill'),grid on >>title('x4(n)'),axis([-15 15 0 1])

其波形如图2-7所示。

图2-7 离散时间信号的基本运算及波形图

数字信号处理实验一

一、实验目的 1. 通过本次实验回忆并熟悉MATLAB这个软件。 2. 通过本次实验学会如何利用MATLAB进行序列的简单运算。 3. 通过本次实验深刻理解理论课上的数字信号处理的一个常见方法——对时刻n的样本附近的一些样本求平均,产生所需的输出信号。 3. 通过振幅调制信号的产生来理解载波信号与调制信号之间的关系。 二、实验内容 1. 编写程序在MATLAB中实现从被加性噪声污染的信号中移除噪声的算法,本次试验采用三点滑动平均算法,可直接输入程序P1.5。 2. 通过运行程序得出的结果回答习题Q1.31-Q1.33的问题,加深对算法思想的理解。 3. 编写程序在MATLAB中实现振幅调制信号产生的算法,可直接输入程序P1.6。 4. 通过运行程序得出的结果回答习题Q1.34-Q1.35的问题,加深对算法思想的理解。 三、主要算法与程序 1. 三点滑动平均算法的核心程序: %程序P1.5 %通过平均的信号平滑 clf; R=51; 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--'); legend('y[n]','s[n]'); xlabel('时间序号n');ylabel('振幅'); 2. 振幅调制信号的产生核心程序:(由于要几个结果,因此利用subplot函数画图) %程序P1.6 %振幅调制信号的产生 n=0:100; m=0.1;fH=0.1;fL=0.01; m1=0.3;fH1=0.3;fL1=0.03; xH=sin(2*pi*fH*n); xL=sin(2*pi*fL*n); y=(1+m*xL).*xH; xH1=sin(2*pi*fH1*n); xL1=sin(2*pi*fL1*n); y1=(1+m1*xL).*xH; y2=(1+m*xL).*xH1; y3=(1+m*xL1).*xH; subplot(2,2,1); stem(n,y); grid; xlabel('时间序号n');ylabel('振幅');title('m=0.1;fH=0.1;fL=0.01;'); subplot(2,2,2); stem(n,y1); grid; xlabel('时间序号n');ylabel('振幅');title('m=0.3;fH=0.1;fL=0.01;'); subplot(2,2,3); stem(n,y2); grid; xlabel('时间序号n');ylabel('振幅');title('m=0.3;fH=0.3;fL=0.01;'); subplot(2,2,4); stem(n,y3); grid;

数字信号处理实验一

实验一 离散时间信号分析 班级 信息131班 学号 201312030103 姓名 陈娇 日期 一、实验目的 掌握两个序列的相加、相乘、移位、反褶、卷积等基本运算。 二、实验原理 1.序列的基本概念 离散时间信号在数学上可用时间序列)}({n x 来表示,其中)(n x 代表序列的第n 个数字,n 代表时间的序列,n 的取值范围为+∞<<∞-n 的整数,n 取其它值)(n x 没有意义。离散时间信号可以是由模拟信号通过采样得到,例如对模拟信号)(t x a 进行等间隔采样,采样间隔为T ,得到)}({nT x a 一个有序的数字序列就是离散时间信号,简称序列。 2.常用序列 常用序列有:单位脉冲序列(单位抽样)) (n δ、单位阶跃序列)(n u 、矩形序列)(n R N 、实指数序列、复指数序列、正弦型序列等。 3.序列的基本运算 序列的运算包括移位、反褶、和、积、标乘、累加、差分运算等。 4.序列的卷积运算 ∑∞ -∞==-= m n h n x m n h m x n y )(*)()()()( 上式的运算关系称为卷积运算,式中代表两个序列卷积运算。两个序列的卷积是一个序列与另一个序列反褶后逐次移位乘积之和,故称为离散卷积,也称两序列的线性卷积。其计算的过程包括以下4个步骤。 (1)反褶:先将)(n x 和)(n h 的变量n 换成m ,变成)(m x 和)(m h ,再将)(m h 以纵轴为对称轴反褶成)(m h -。

(2)移位:将)(m h -移位n ,得)(m n h -。当n 为正数时,右移n 位;当n 为负数时,左移n 位。 (3)相乘:将)(m n h -和)(m x 的对应点值相乘。 (4)求和:将以上所有对应点的乘积累加起来,即得)(n y 。 三、主要实验仪器及材料 微型计算机、Matlab6.5 教学版、TC 编程环境。 四、实验内容 (1)用Matlab 或C 语言编制两个序列的相加、相乘、移位、反褶、卷积等的程序; (2)画出两个序列运算以后的图形; (3)对结果进行分析; (4)完成实验报告。 五、实验结果 六、实验总结

数字信号处理实验

实验一 离散傅里叶变换(DFT )对确定信号进行谱分析 一.实验目的 1.加深对DFT 算法原理和基本性质的理解。 2.熟悉DFT 算法和原理的编程方法。 3.学习用DFT 对信号进行谱分析的方法,了解可能出现的误差及其原因,以便在实际中正确利用。 二.实验原理 一个连续信号)(t x a 的频谱可以用其傅里叶变换表示,即 dt e t x j X t j a a Ω-∞ ∞ -? = Ω)()( 若对)(t x a 进行理想采样可得采样序列 )(|)()(nT x t x n x a nT t a === 对)(n x 进行DTFT ,可得其频谱为: ∑∞ -∞ =-= n n j j e n x e X ωω )()( 其中数字频率ω与模拟频率Ω的关系为: s f T Ω = Ω=ω )(n x 的DFT 为∑∞ -∞ =-= n nk N j e n x k X π 2)()( 若)(t x a 是限带信号,且在满足采样定理的条件下,)(ω j e X 是)(Ωj X a 的周期延拓, )(k X 是)(ωj e X 在单位圆上的等间隔采样值,即k N j e X k X πωω2| )()(= =。 为在计算机上分析计算方便,常用)(k X 来近似)(ω j e X ,这样对于长度为N 的有限 长序列(无限长序列也可用有限长序列来逼近),便可通过DFT 求其离散频谱。 三.实验内容 1.用DFT 对下列序列进行谱分析。 (1))()04.0sin(3)(100n R n n x π=

1 (2)]0,0,0,0,0,0,0,0,1,1,1,1[)(=n x 2.为了说明高密度频谱和高分辨率频谱之间的区别,考察序列 )52.0cos()48.0cos()(n n n x ππ+= (1)当0≤n ≤10时,确定并画出x(n)的离散傅里叶变换。 (2)当0≤n ≤100时,确定并画出x(n)的离散傅里叶变换。 四.实验结果 1. (1) (2)

数字信号处理实验作业

实验6 数字滤波器的网络结构 一、实验目的: 1、加深对数字滤波器分类与结构的了解。 2、明确数字滤波器的基本结构及其相互间的转换方法。 3、掌握用MA TLAB 语言进行数字滤波器结构间相互转换的子函数及程序编写方法。 二、实验原理: 1、数字滤波器的分类 离散LSI 系统对信号的响应过程实际上就是对信号进行滤波的过程。因此,离散LSI 系统又称为数字滤波器。 数字滤波器从滤波功能上可以分为低通、高通、带通、带阻以及全通滤波器;根据单位脉冲响应的特性,又可以分为有限长单位脉冲响应滤波器(FIR )和无限长单位脉冲响应滤波器(IIR )。 一个离散LSI 系统可以用系统函数来表示: M -m -1-2-m m m=0 012m N -1-2-k -k 12k k k=1 b z b +b z +b z ++b z Y(z)b(z)H(z)=== =X(z)a(z) 1+a z +a z ++a z 1+a z ∑∑ 也可以用差分方程来表示: N M k m k=1 m=0 y(n)+a y(n-k)=b x(n-m)∑∑ 以上两个公式中,当a k 至少有一个不为0时,则在有限Z 平面上存在极点,表达的是以一个IIR 数字滤波器;当a k 全都为0时,系统不存在极点,表达的是一个FIR 数字滤波器。FIR 数字滤波器可以看成是IIR 数字滤波器的a k 全都为0时的一个特例。 IIR 数字滤波器的基本结构分为直接Ⅰ型、直接Ⅱ型、直接Ⅲ型、级联型和并联型。 FIR 数字滤波器的基本结构分为横截型(又称直接型或卷积型)、级联型、线性相位型及频率采样型等。本实验对线性相位型及频率采样型不做讨论,见实验10、12。 另外,滤波器的一种新型结构——格型结构也逐步投入应用,有全零点FIR 系统格型结构、全极点IIR 系统格型结构以及全零极点IIR 系统格型结构。 2、IIR 数字滤波器的基本结构与实现 (1)直接型与级联型、并联型的转换 例6-1 已知一个系统的传递函数为 -1-2-3 -1-2-3 8-4z +11z -2z H(z)=1-1.25z +0.75z -0.125z 将其从直接型(其信号流图如图6-1所示)转换为级联型和并联型。

数字信号处理实验1,2,3,4

实验一 连续时间系统的时域和频域分析相关MATLAB 函数1.设描述连续时间系统的微分方程为:)()()()()()()()(01)1(1)(01)1(1)(t f b t f b t f b t f b t y a t y a t y a t y a m m m m n n n n +'+++=+'+++---- 则可用向量和表示该系统,即 a b ] ,,,,[011a a a a a n n -=],,,,[011b b b b b m m -=注意,向量和的元素一定要以微分方程时间求导的降幂次序排列,且缺项要用0补齐。a b 如微分方程)()()(2)(3)(t f t f t y t y t y +''=+'+''表示该系统的向量为 ]2 3 1[=a ]1 0 1[=b (1)求解冲激响应:impulse()函数impulse()函数有以下四种调用格式: ① impulse(b,a) 该调用格式以默认方式绘制由向量和定义的连续时间系统的冲激响应的时域波形。a b ② impulse(b,a,t)该调用格式绘制由向量和定义的连续时间系统在时间范围内的冲激响应的时a b t ~0域波形。③ impulse(b,a, t1:p:t2)该调用格式绘制由向量和定义的连续时间系统在时间范围内,且以时间间a b 21~t t 隔均匀抽样的冲激响应的时域波形。p ④ y=impulse(b,a,t1:p:t2)该调用格式并不绘制系统冲激响应的波形,而是求出由向量和定义的连续时间系a b 统在时间范围内以时间间隔均匀抽样的系统冲激响应的数值解。21~t t p (2)求解阶跃响应:step()函数 step()函数也有四种调用格式:① step(b,a) ② step(b,a,t) ③ step(b,a, t1:p:t2) ④ y=step(b,a,t1:p:t2) 上述调用格式的功能与impulse()函数完全相同。

数字信号处理实验答案完整版

数字信号处理实验答案 HEN system office room 【HEN16H-HENS2AHENS8Q8-HENH1688】

实验一熟悉Matlab环境 一、实验目的 1.熟悉MATLAB的主要操作命令。 2.学会简单的矩阵输入和数据读写。 3.掌握简单的绘图命令。 4.用MATLAB编程并学会创建函数。 5.观察离散系统的频率响应。 二、实验内容 认真阅读本章附录,在MATLAB环境下重新做一遍附录中的例子,体会各条命令的含义。在熟悉了MATLAB基本命令的基础上,完成以下实验。 上机实验内容: (1)数组的加、减、乘、除和乘方运算。输入A=[1 2 3 4],B=[3 4 5 6],求C=A+B,D=A-B,E=A.*B,F=A./B,G=A.^B并用stem语句画出A、B、C、D、E、F、G。 clear all; a=[1 2 3 4]; b=[3 4 5 6]; c=a+b; d=a-b; e=a.*b; f=a./b; g=a.^b; n=1:4; subplot(4,2,1);stem(n,a); xlabel('n');xlim([0 5]);ylabel('A'); subplot(4,2,2);stem(n,b); xlabel('n');xlim([0 5]);ylabel('B'); subplot(4,2,3);stem(n,c); xlabel('n');xlim([0 5]);ylabel('C'); subplot(4,2,4);stem(n,d); xlabel('n');xlim([0 5]);ylabel('D'); subplot(4,2,5);stem(n,e); xlabel('n');xlim([0 5]);ylabel('E'); subplot(4,2,6);stem(n,f); xlabel('n');xlim([0 5]);ylabel('F'); subplot(4,2,7);stem(n,g); xlabel('n');xlim([0 5]);ylabel('G'); (2)用MATLAB实现下列序列: a) x(n)= 0≤n≤15 b) x(n)=e+3j)n 0≤n≤15 c) x(n)=3cosπn+π)+2sinπn+π) 0≤n≤15 d) 将c)中的x(n)扩展为以16为周期的函数x(n)=x(n+16),绘出四个周期。

数字信号处理实验4-6

实验4 离散系统的变换域分析 一、实验目的 1、熟悉对离散系统的频率响应分析方法; 2、加深对零、极点分布的概念理解。 二、实验原理 离散系统的时域方程为 其变换域分析方法如下: 频域: 系统的频率响应为: Z域: 系统的转移函数为:

分解因式: , 其中和称为零、极点。 三、预习要求 1.在MATLAB中,熟悉函数tf2zp、zplane、freqz、residuez、zp2sos的使用,其中:[z, p,K]=tf2zp(num,den)求得有理分式形式的系统转移函数的零、极点;zplane(z,p)绘制零、极点分布图;h=freqz(num,den,w)求系统的单位频率响应;[r,p,k]=residuez (num,den)完成部分分式展开计算;sos=zp2sos(z,p,K)完成将高阶系统分解为2阶系统的串联。 2.阅读扩展练习中的实例,学习频率分析法在MATLAB中的实现; 3.编程实现系统参数输入,绘出幅度频率响应和相位响应曲线和零、极点分布图。 四、实验内容 求系统 的零、极点和幅度频率响应和相位响应。 解析: 【代码】 num=[0.0528 0.0797 0.1295 0.1295 0.797 0.0528]; den=[1 -1.8107 2.4947 -1.8801 0.9537 -0.2336]; [z,p,k]=tf2zp(num,den); disp('零点');disp(z); disp('极点');disp(p); disp('增益系数');disp(k); figure(1) zplane(num,den)

figure(2) freqz(num,den,128) 【图形】 -2 -1.5 -1 -0.500.5 1 1.5 -1.5 -1 -0.5 0.51 1.5 Real Part I m a g i n a r y P a r t 0.1 0.2 0.30.40.50.60.70.80.9 1 -800 -600-400-2000 Normalized Frequency (?π rad/sample) P h a s e (d e g r e e s ) 0.1 0.2 0.30.40.50.60.70.80.9 1 -40-2002040Normalized Frequency (?π rad/sample) M a g n i t u d e (d B ) 【结果】 零点 -1.5870 + 1.4470i

数字信号处理实验报告(实验1_4)

实验一 MATLAB 仿真软件的基本操作命令和使用方法 实验容 1、帮助命令 使用 help 命令,查找 sqrt (开方)函数的使用方法; 2、MATLAB 命令窗口 (1)在MATLAB 命令窗口直接输入命令行计算3 1)5.0sin(21+=πy 的值; (2)求多项式 p(x) = x3 + 2x+ 4的根; 3、矩阵运算 (1)矩阵的乘法 已知 A=[1 2;3 4], B=[5 5;7 8],求 A^2*B

(2)矩阵的行列式 已知A=[1 2 3;4 5 6;7 8 9],求A (3)矩阵的转置及共轭转置 已知A=[1 2 3;4 5 6;7 8 9],求A' 已知B=[5+i,2-i,1;6*i,4,9-i], 求B.' , B' (4)特征值、特征向量、特征多项式 已知A=[1.2 3 5 0.9;5 1.7 5 6;3 9 0 1;1 2 3 4] ,求矩阵A的特征值、特征向量、特征多项式;

(5)使用冒号选出指定元素 已知:A=[1 2 3;4 5 6;7 8 9];求A 中第3 列前2 个元素;A 中所有列第2,3 行的元素; 4、Matlab 基本编程方法 (1)编写命令文件:计算1+2+…+n<2000 时的最大n 值;

(2)编写函数文件:分别用for 和while 循环结构编写程序,求 2 的0 到15 次幂的和。

5、MATLAB基本绘图命令 (1)绘制余弦曲线 y=cos(t),t∈[0,2π]

(2)在同一坐标系中绘制余弦曲线 y=cos(t-0.25)和正弦曲线 y=sin(t-0.5), t∈[0,2π] (3)绘制[0,4π]区间上的 x1=10sint 曲线,并要求: (a)线形为点划线、颜色为红色、数据点标记为加号; (b)坐标轴控制:显示围、刻度线、比例、网络线 (c)标注控制:坐标轴名称、标题、相应文本; >> clear;

数字信号处理实验报告一

武汉工程大学 数字信号处理实验报告 姓名:周权 学号:1204140228 班级:通信工程02

一、实验设备 计算机,MATLAB语言环境。 二、实验基础理论 1.序列的相关概念 2.常见序列 3.序列的基本运算 4.离散傅里叶变换的相关概念 5.Z变换的相关概念 三、实验内容与步骤 1.离散时间信号(序列)的产生 利用MATLAB语言编程产生和绘制单位样值信号、单位阶跃序列、指数序列、正弦序列及随机离散信号的波形表示。 四实验目的 认识常用的各种信号,理解其数字表达式和波形表示,掌握在计算机中生成及绘制数字信号波形的方法,掌握序列的简单运算及计算机实现与作用,理解离散时间傅里叶变换,Z变换及它们的性质和信号的频域分

实验一离散时间信号(序列)的产生 代码一 单位样值 x=2; y=1; stem(x,y); title('单位样值 ') 单位阶跃序列 n0=0; n1=-10; n2=10; n=[n1:n2]; x=[(n-n0)>=0]; stem(n,x); xlabel('n'); ylabel('x{n}'); title('单位阶跃序列');

实指数序列 n=[0:10]; x=(0.5).^n; stem(n,x); xlabel('n'); ylabel('x{n}'); title('实指数序列');

正弦序列 n=[-100:100]; x=2*sin(0.05*pi*n); stem(n,x); xlabel('n'); ylabel('x{n}'); title('正弦序列');

随机序列 n=[1:10]; x=rand(1,10); subplot(221); stem(n,x); xlabel('n'); ylabel('x{n}'); title('随机序列');

数字信号处理实验三

实验三:离散LSI 系统的频域分析 一、实验内容 2、求以下各序列的z 变换: 12030() ()sin() ()sin()n an x n na x n n x n e n ωω-=== 程序清单如下: syms w0 n z a; x1=n*a^n;X1=ztrans(x1) x2=sin(w0*n);X2=ztrans(x2) x3= exp(-a*n)*sin(w0*n);X3=ztrans(x3) 程序运行结果如下: X1 =z/(a*(z/a - 1)^2) X2 =(z*sin(w0))/(z^2 - 2*cos(w0)*z + 1) X3 =(z*exp(a)*sin(w0))/(exp(2*a)*z^2 - 2*exp(a)*cos(w0)*z + 1) 3、求下列函数的逆z 变换 0 312342 1 1() () () ()() 1j z z z z X z X z X z X z z a z a z e z ω---= = = = ---- 程序清单如下: syms w0 n z a; X1=z/(z-a);x1=iztrans(X1) X2= z/(a-z)^2;x2=iztrans(X2) X3=z/ z-exp(j*w0);x3=iztrans(X3) X4=(1-z^-3)/(1-z^-1);x4=iztrans(X4) 程序运行结果如下: x1 =a^n x2 =n*a^n/a 课程名称 数字信号 实验成绩 指导教师 实 验 报 告 院系 信息工程学院 班级 学号 姓名 日期

x3 =charfcn[0](n)-iztrans(exp(i*w0),w0,n) x4 =charfcn[2](n)+charfcn[1](n)+charfcn[0](n) 4、求一下系统函数所描述的离散系统的零极点分布图,并判断系统的稳定性 (1) (0.3)()(1)(1) z z H z z j z j -= +-++ z1=[0,0.3]';p1=[-1+j,-1-j]';k=1; [b1,a1]=zp2tf(z1,p1,k); subplot(1,2,1);zplane(z1,p1); title('极点在单位圆外); subplot(1,2,2);impz(b1,a1,20); 由图可见:当极点位于单位圆内,系统的单位序列响应随着频率的增大而收敛;当极点位于单位圆上,系统的单位序列响应为等幅振荡;当极点位于单位圆外,系统的单位序列响应随着频率的增大而发散。由此可知系统为不稳定系统。 -1 -0.5 00.51 -2 -1.5-1-0.500.511.5 2Real Part I m a g i n a r y P a r t 极点在单位圆外 n (samples) A m p l i t u d e Impulse Response

数字信号处理实验4

数字信号处理实验四 第一题结果: (1)没有增加过渡点 源码如下: N = 15; H = [1 1 1 0.5 zeros(1,7) 0.5 1 1 1]; %确定抽样点的幅度大小 %H(3,13) = 0.75;H(5,11) = 0.25; %设置过渡点 k = 0:N-1; A = exp(-j*pi*k*(N-1)/N); %抽样点相位大小 HK = H.*A; %求抽样点的H(k) hn = ifft(HK,N); %求出FIR的单位冲激响应h(n) freqz(hn,1,256); %画出幅频相频曲线figure(2); stem(real(hn),'.'); %绘制单位冲激响应的实部 line([0,35],[0,0]);xlabel('n');ylabel('Real(h(n))'); 单位脉冲响应曲线 幅频和相频特性曲线

(2)增加过渡点 源码如下: N = 15; H = [1 1 1 0.5 zeros(1,7) 0.5 1 1 1]; %确定抽样点的幅度大小 H(3) = 0.75;H(13) = 0.75;H(5) = 0.25;H(11) = 0.25; %设置过渡点 k = 0:N-1; A = exp(-j*pi*k*(N-1)/N); %抽样点相位大小 HK = H.*A; %求抽样点的H(k) hn = ifft(HK,N); %求出FIR的单位冲激响应h(n) freqz(hn,1,256); %画出幅频相频曲线figure(2); stem(real(hn),'.'); %绘制单位冲激响应的实部 line([0,35],[0,0]);xlabel('n');ylabel('Real(h(n))'); 单位脉冲响应曲线 幅频和相频特性曲线 第二题结果:

数字信号处理实验六-时域采样与信号的重建

实验目的: 1.了解用MATLAB语言进行时域抽样与信号重建的方法 2.进一步加深对时域信号抽样与恢复的基本原理的理解 3.掌握采样频率的确定方法和内插公式的编程方法。 二.实验内容 1认真阅读并输入实验原理与方法中介绍的例子,观察输出波形曲线,理解每一条语句的含义。. 2.已知一个连续时间信号f(t)=sinc(t)。取最高有限带宽频率fm=1Hz。(1)分别显示原连续时间信号波形和Fm=fm、Fm=2fm、Fm=3fm三种情况下抽样信号的波形。 实验程序: dt=0.1; f0=1; T0=1/f0; fm=f0; Tm=1/fm; t=-2:dt:2; f=sinc(t); subplot(4,1,1),plot(t,f,'k'); axis([min(t) max(t) 1.1*min(f) 1.1*max(f)]); title('原连续信号和抽样信号'); for i=1:3; fs=i*fm; Ts=1/fs;

n=-2:Ts:2; f=sinc(n); subplot(4,1,i+1),stem(n,f,'filled','k'); axis([min(n) max(n) 1.1*min(f) 1.1*max(f)]); end 实验截图: (2)求解原连续信号波形和抽样信号所对应的幅度谱。实验程序: dt=0.1;t=-4:dt:4;

N=length(t);f=sinc(t);Tm=1;fm=1/Tm; wm=2*pi*fm;k=1:N; w1=k*wm/N; F1=f*exp(-j*t'*w1)*dt; subplot(4,1,1),plot(w1/(2*pi),abs(F1));grid axis([0 max(4*fm) 1.1*min(F1) 1.1*max(F1)]); for i=1:3; if i<= 2 c=0 ,else c=0.2,end fs=(4-i+c)*fm; Ts=1/fs; n=-4:Ts:4; f=sinc(n); N=length(n); wm=2*pi*fs; k=1:N; w=k*wm/N; F=f*exp(-j*n'*w)*Ts; subplot(4,1,5-i),plot(w/(2*pi),abs(F),'k');grid axis([0 max(4*fm) 1.1*min(F) 1.1*max(F)]); end 实验截图:

数字信号处理实验1

clc; clear; M=26;N=32;n=0:M; xa=0:M/2; xb=ceil(M/2)-1:-1:0; xn=[xa,xb]; Xk=fft(xn,512); Xk1=abs(Xk); X32k=fft(xn,32); X32k1=abs(X32k); x32n=ifft(X32k); X16k=X32k(1:2:N); X16k1=abs(X16k); x16n=ifft(X16k,N/2); figure(1); subplot(3,2,1); stem(Xk1); subplot(3,2,2); stem(X32k1); subplot(3,2,3); stem(x32n); subplot(3,2,4); stem(X16k1); subplot(3,2,5); stem(x16n); Lx=41;N=5;M=10; hn=ones(1,N);hn1=[hn zeros(1,Lx-N)]; n=0:Lx-1; xn=cos(pi*n/10)+cos(2*pi*n/5); yn=fftfilt(hn,xn,M); figure(1); subplot(3,1,1); stem(hn1); subplot(3,1,2); stem(xn); subplot(3,1,3); stem(yn);

clc; clear; n=0:31; A=3; y=A*exp((0.8+j*314)*n); subplot(2,1,1); stem(y); Az=[0.7 0.3]; Bz=[1 -0.8 -0.5]; subplot(2,1,2); zplane(Bz,Az);

数字信号处理实验报告 六

程序P6.1 % 程序 P6_1 % 将一个有理数传输函数 % 转换为因式形式 num = input('分子系数向量 = '); den = input('分母系数向量 = '); [z,p,k] = tf2zp(num,den); sos = zp2sos(z,p,k) Q6.1 使用程序p6.1,生成如下有限冲激响应传输函数的一个级联实现:H1(Z)=2+10Z^-1+23Z^-2+34Z^-3+31Z^-4+16Z^-5+4Z^-6 画出级联实现的框图。H1(Z)是一个线性相位传输函数吗? 分子系数向量 = [2,10,23,34,31,16,4] 分母系数向量 = [1,0,0,0,0,0,0] sos = 2.0000 6.0000 4.0000 1.0000 0 0 1.0000 1.0000 2.0000 1.0000 0 0 1.0000 1.0000 0.5000 1.0000 0 0 Y[k] 2 11 X[k] Q6.2 使用程序p6.1,生成如下有限冲激响应传输函数的一个级联实现:H2(Z)=6+31Z^-1+74Z^-2+102Z^-3+74Z^-4+31Z^-5+6Z^-6 画出级联实现的框图。H2(Z )是一个线性相位传输函数吗?只用4个乘法器生成H2(Z)的一个级联实现。显示新的级联结构的框图。 分子系数向量 = [6,31,74,102,74,31,6] 分母系数向量 = [1,0,0,0,0,0,0] sos =

6.0000 15.0000 6.0000 1.0000 0 0 1.0000 2.0000 3.0000 1.0000 0 0 1.0000 0.6667 0.3333 1.0000 0 0 Y[k] 6 11 X[k] Q6.3 使用程序 6.1生成如下因果无限冲激响应传输函数的级联实现: H1(Z)=(3+8Z^-1+12Z^-2+7Z^-3+2Z^-4-2Z^-5)/(16+24Z^-1+24Z^-2+14Z^-3+5Z^-4+Z^-5),画出级联实现的框图。 分子系数向量 = [3,8,12,7,2,-2] 分母系数向量 = [16,24,24,14,5,1] sos = 0.1875 -0.0625 0 1.0000 0.5000 0 1.0000 2.0000 2.0000 1.0000 0.5000 0.2500 1.0000 1.0000 1.0000 1.0000 0.5000 0.5000 Y [k ] 0.1875 11 11X [k ] Q6.4使用程序6.1生成如下因果无限冲激响应传输函数的级联实现:

数字信号处理实验二

实验二: 用FFT 作谱分析 实验目的 (1) 进一步加深DFT 算法原理和基本性质的理解(因为FFT 只是DFT 的一种快速算法, 所以FFT 的运算结果必然满足DFT 的基本性质)。 (2) 熟悉FFT 算法原理和FFT 子程序的应用。 (3) 学习用FFT 对连续信号和时域离散信号进行谱分析的方法, 了解可能出现的分析误差及其原因, 以便在实际中正确应用FFT 。 ● 实验步骤 (1) 复习DFT 的定义、 性质和用DFT 作谱分析的有关内容。 (2) 复习FFT 算法原理与编程思想, 并对照DIT-FFT 运算流图和程序框图, 读懂本实验提供的FFT 子程序。 (3) 编制信号产生子程序, 产生以下典型信号供谱分析用: (4) 编写主程序。 下图给出了主程序框图, 供参考。 本实验提供FFT 子程序和通用绘图子程序。 (5) 按实验内容要求, 上机实验, 并写出实验报告。 1423()()1,03()8470403()3470 x n R n n n x n n n n n x n n n =?+≤≤? =-≤≤?? ?-≤≤?? =-≤≤???456()cos 4 ()sin 8 ()cos8cos16cos20x n n x n n x n t t t π π πππ===++

●实验内容 (1) 对2 中所给出的信号逐个进行谱分析。 (2) 令x(n)=x4(n)+x5(n),用FFT计算8 点和16 点离散傅里叶变换, X(k)=DFT[x(n)] (3) 令x(n)=x4(n)+jx5(n),重复(2)。 ●实验报告要求 (1) 简述实验原理及目的。 (2) 结合实验中所得给定典型序列幅频特性曲线,与理论结果比较,并分析说明误差产生的原因以及用FFT作谱分析时有关参数的选择方法。 (3) 总结实验所得主要结论。 (4) 简要回答思考题。 Matlab代码: 对六个所给信号进行谱分析的主程序(对信号进行64点的FFT变换): clc;clear all; N=64; x1=Signal_x1(N);

数字信号处理实验1认识实验

实验1认识实验-MATLAB语言上机操作实践 一、实验目的 ㈠了解MATLAB语言的主要特点、作用。 ㈡学会MATLAB主界面简单的操作使用方法。 ㈢学习简单的数组赋值、运算、绘图、流程控制编程。 二、实验原理 ㈠简单的数组赋值方法 MATLAB中的变量和常量都可以是数组(或矩阵),且每个元素都可以是复数。 在MATLAB指令窗口输入数组A=[1 2 3;4 5 6;7 8 9],观察输出结果。然后,键入:A(4,2)= 11 键入:A (5,:) = [-13 -14 -15] 键入:A(4,3)= abs (A(5,1)) 键入:A ([2,5],:) = [ ] 键入:A/2 键入:A (4,:) = [sqrt(3) (4+5)/6*2 –7] 观察以上各输出结果。将A式中分号改为空格或逗号,情况又如何?请在每式的后面标注其含义。 2.在MATLAB指令窗口输入B=[1+2i,3+4i;5+6i ,7+8i], 观察输出结果。 键入:C=[1,3;5,7]+[2,4;6,8]*i,观察输出结果。 如果C式中i前的*号省略,结果如何? 键入:D = sqrt (2+3i) 键入:D*D 键入:E = C’, F = conj(C), G = conj(C)’ 观察以上各输出结果, 请在每式的后面标注其含义。 3.在MATLAB指令窗口输入H1=ones(3,2),H2=zeros(2,3),H3=eye(4),观察输出结果。 ㈡、数组的基本运算 1.输入A=[1 3 5],B= [2 4 6],求C=A+B,D=A-2,E=B-A 2.求F1=A*3,F2=A.*B,F3=A./B,F4=A.\B, F5=B.\A, F6=B.^A, F7=2./B, F8=B.\2 *3.求B',Z1=A*B’,Z2=B’*A 观察以上各输出结果,比较各种运算的区别,理解其含义。 ㈢、常用函数及相应的信号波形显示 例1:显示曲线f(t)=2sin(2πt),(t>0) ⅰ点击空白文档图标(New M-file),打开文本编辑器。 ⅱ键入:t=0:0.01:3; (1) f=2*sin(2*pi*t); (2) plot(t,f); title(‘f(t)-t曲线’); xlabel(‘t’),ylabel(‘f(t)’);

数字信号处理实验

数字信号处理实验

实验一 自适应滤波器 一、实验目的 1、掌握功率谱估计方法 2、会用matlab 对功率谱进行仿真 二、实验原理 功率谱估计方法有很多种,一般分成两大类,一类是经典谱估计;另一类是现代谱估计。经典谱估计可以分成两种,一种是BT 法,另一种是周期法;BT 法是先估计自相关函数,然后将相关函数进行傅里叶变换得到功率谱函数。相应公式如下所示: ||1 *0 1 ?()()()(11) ??()(12) N m xx n jwn BT xx m r m x n x n m N P r m e --=∞ -=-∞ =+-=-∑ ∑ 周期图法是采用功率谱的另一种定义,但与BT 法是等价的,相应的功率谱估计如下所示: 21 1? ()()01 (13)N jw jwn xx n P e x n e n N N --== ≤≤--∑ 其计算框图如下所示: 观测数据x(n) FFT 取模的平方 1/N ) (jw xx e ∧ 图1.1周期图法计算用功率谱框图

由于观测数据有限,所以周期图法估计分辨率低,估计误差大。针对经典谱估计的缺点,一般有三种改进方法:平均周期图法、窗函数法和修正的周期图平均法。 三、实验要求 信号是正弦波加正态零均值白噪声,信噪比为10dB,信号频率为2kHZ,取样频率为100kHZ。 四、实验程序与实验结果 (1)用周期图法进行谱估计 A、实验程序: %用周期法进行谱估计 clear all; N1=128;%数据长度 N2=256; N3=512; N4=1024; f=2;%正弦波频率,单位为kHZ fs=100;%抽样频率,单位为kHZ n1=0:N1-1; n2=0:N2-1; n3=0:N3-1; n4=0:N4-1; a=sqrt(20);%由信噪比为10dB计算正弦信号的幅度

数字信号处理实验一.

实验一离散傅里叶变换的性质 一、实验目的 1、掌握离散傅里叶变换的性质,包括线性特性、时移特性、频移特性、对称性和循环卷积等性质; 2、通过编程验证傅里叶变换的性质,加强对傅里叶变换性质的认识。二、实验原理和方法 1. 线性特性 1212DFT[((]((ax n bx n aX k bX k +=+ 2. 时移特性 DFT[(](DFT[(]( km km x n m W X k x n m W X k ?+=?= 3. 频移特性 ((nl N IDFT X k l IDFT X k W +=???????? 4. 对称性 设由x(n开拓成的周期序列为 (p x n 则(((p pe po x n x n x n =+ 偶序列(((*1 2 pe p p x n x n x N n ??= +???奇序列(((*12 po p p x n x n x N n ??=

????将(pe x n 和(po x n 截取主周期,分别得 (((pet pe N x n x n R n = (((pot po N x n x n R n = 则(((((p N pet pot x n x n R n x n x n ==+ x(n序列的实部和虚部的离散立叶变换 ({} (Re pet DFT x n X k =???? ({} (Im pot DFT j x n X k =???? [][] (((((((((((arg (arg (R R R I I I X k X k X N k X k X k X N k X k X k X N k X k X N k X k X k ?=?=?=?=?=??=??=?=?? 5. 循环卷积 (3123121 (((((x n x n x n X k X k X k N =?= ?有限长序列线性卷积与循环卷积的关系 X1(n和x2(n的线性卷积: 11 31 2 1 2 0(((((N m m x n x m x n m x m x n ?∞=?∞

数字信号处理实验八

实验报告 实验名称:FIR数字滤波器设计及应用 课程名称____数字信号处理________ 院系部:电气与电子工程专业班级:信息1002 学生姓名:王萌学号: 11012000219同组人:实验台号: 指导教师:范杰清成绩: 实验日期: 华北电力大学

一、实验目的 加深理解 FIR 数字滤波器的时域特性和频域特性,掌握FIR 数字 滤波器的设计原理与设计方法,以及FIR 数字滤波器的应用。 二、 实验原理 FIR 数字滤波器可以设计成具有线性相位,在数据通信、图像处理、 语音信号处理等实际应用领域得到广泛应用。 M 阶FIR 数字滤波器的系统函数为: FIR 数字滤波器的单位脉冲响应h [k ]是长度为M +1的有限长因果序列。当满足对称条件时,该FIR 数字滤波器具有线性相位。FIR 数字滤波器设计方法主要有窗口法、频率取样法及优化设计法。 MATLAB 中提供的常用FIR 数字滤波器设计函数有: fir1 窗函数法设计FIR 数字滤波器(低通、高通、带通、 带阻、多频带滤波器) fir2 频率取样法设计FIR 数字滤波器:任意频率响应 firls FIR 数字滤波器设计:指定频率响应 firrcos 升余弦型 FIR 数字滤波器设计 intfilt 内插FIR 数字滤波器设计 kaiserord 凯塞(Kaiser)窗函数设计法的阶数估计 firpm Parks-McClellan 算法实现FIR 数字滤波器优化设计 firpmord Parks-McClellan 数字滤波器的阶数选择 cremez 复系数非线性相位FIR 等波纹滤波器设计 1、 窗口法设计FIR 数字滤波器 fir1函数可以很容易地实现FIR 数字滤波器窗口法设计。 可设计低通、高通、带通、带阻滤波器、多频带滤波器。 k M k z k h z H -=∑=][)(0

数字信号处理实验六

实验六 一、实验名称 离散时间滤波器设计 二、实验目的: 1、掌握利用脉冲响应不变法设计IIR 数字滤波器的原理及具体方法。 2、加深理解数字滤波器与连续时间滤波器之间的技术转化。 3、掌握脉冲响应不变法设计IIR 数字滤波器的优缺点及使用范围。 4、掌握利用双线性变换法设计IIR 数字滤波器的原理及具体方法。 5、深入理解利用双线性变换法设计IIR 数字滤波器的优缺点及使用范围。 三、实验原理: 1、脉冲响应不变法变换原理 脉冲响应不变法将模拟滤波器的s 平面变换成数字滤波器的z 平面,从而将模拟滤波器映射成数字滤波器。 IIR 滤波器的系数函数为1 -z (或z )的有理分式,即 ∑∑=-=--= N k k k M k k k z a z b z H 1 01)( 一般满足N M ≤。 ⑴转换思路: )(H )()(h )(h )(z n h nT t s H z a a ??→?=???→?????→?变换 时域采样拉普拉斯逆变换 若模拟滤波器的系统函数H (s )只有单阶极点,且假定分母的阶次大于分子的阶次,表达式: ∑ =--=N k T s k z e TA z H k 111)( ⑵s 平面与z 平面之间的映射关系。 Ω +==j s re z j σω→ =→=→ΩT j T jw sT e e re e z σT e r T Ω==ωσ IIR 数字滤波器设计的重要环节式模拟低通滤波器的设计,典型的模拟低通滤波器有巴 特沃兹和切比雪夫等滤波器。由模拟低通滤波器经过相应的复频率转换为H (s ),由H (s )经过脉冲响应不变法就得到所需要的IIR 数字滤波器H (z )。 Matlab 信号处理工具箱中提供了IIR 滤波器设计的函数,常用的函数: IIR 滤波器阶数选择 Buttord--巴特沃兹滤波器阶数选择。 Cheb1ord--切比雪夫I 型滤波器阶数选择。 Cheb2ord--切比雪夫II 型滤波器阶数选择。 IIR 滤波器设计 Butter--巴特沃兹滤波器设计。

相关文档