




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
MATLAB基础与应用电子信息工程专业1提纲MATLAB简介MATLAB基础利用MATLAB进行信号与系统分析2MATLAB简介MATLAB是由美国的MathWorks公司推出的应用软件。MATLAB是MatrixLaboratory(矩阵实验室)的缩写。33MATLAB是什么?用于科学工程计算的高效率高级语言语言开发系统适合多学科、多种工作平台的功能强大的大型软件44MATLAB的主要构成编程语言:以矩阵和数组为基本数据单位的编程语言;工作环境:一系列应用工具提供编写、调试程序的环境;图形处理:包括绘制图形和创建GUI等。数学库函数:包含丰富的数学函数和其他复杂功能函数;API:为MATLAB与其它语言编写的程序进行交互提供接口。55MATLAB语言特点(一)采用统一的数据和变量对象——矩阵,即数据是矩阵元素的数据,变量是矩阵变量;在生成矩阵对象时,不要求做明确的维数说明,有丰富的矩阵处理功能;功能强、易学易用,还可根据实际需要扩充功能;一条语句或一个函数相当于C语言中的一个子程序或一个处理功能;MATLAB还拥有各种实用的软件,提供了许多通信系统模型,能对系统直接进行仿真;66MATLAB语言特点(二)用户可以自己编写函数,绘制系统响应曲线;MATLAB还具有符号运算功能,直接用符号算式进行演算;MATLAB提供了SIMULINK软件包,该软件包提供了通信和控制系统方块图的图形编程形式,这样利用通信系统方块图的图形对系统直接进行仿真,使得一个很复杂的系统仿真变得相当容易。77MATLAB采用了面向对象的技术,以矩阵作为基本数据结构和以矩阵运算为基础,集科学计算和图形可视化为一体。MATLAB是高层次的矩阵/数组语言,具有条件控制、函数调用、数据结构、输入输出、面向对象等程序语言特性。MATLAB还带有许多针对不同应用所开发的工具箱(Toolboxs)。8MATLAB语言特点(三)8MATLAB已成为各种系统仿真、数字信号处理、科学可视化的标准语言。MATLAB已确认为必须掌握的计算工具,是从理论通向实际的桥梁,是最可信赖的科技资源之一。9MATLAB语言重要性9MATLAB产品族可以用来进行如下工作:*数值分析;*数值和符号计算;*工程与科学绘图;*控制系统的设计与仿真;*数字图像处理;*数字信号处理;*通讯系统设计与仿真;*财务与金融工程。1010操作桌面的缺省外貌11命令窗口(指令窗)命令历史窗口(历史指令窗)工作空间窗口(浏览器)当前路径(当前目录)窗口11通用操作界面命令窗口(指令窗)(CommandWindow)工作空间窗口(浏览器)(WorkspaceBrowser
)命令历史窗口(历史指令窗)(CommandHistory)当前路径(当前目录)窗口(CurrentDirectoryBrowser)内存数组编辑器(ArrayEditor)M文件编辑/调试器(Editor/Debugger)帮助导航/浏览器(HelpNavigator/Browser)图形窗口(Figure)1212命令窗口的常用控制指令13指令含义cd设置当前工作目录clf清除图形窗clc清除指令窗中显示内容clear清除MATLAB工作空间中保存的变量dir列出指定目录下的文件和子目录清单edit打开M文件编辑器exit关闭/退出MATLABquit关闭/退出MATLABmd创建目录more使其后的显示内容分页进行type显示指定M文件的内容which指出其后文件所在的目录13指令行中的标点符号名称标点作用空格(为机器辨认)用作数组元素分隔符号逗号,用作要显示计算结果的指令与其后指令的分隔;用作输入量与输入量之间的分隔符;用作数组元素分隔符号黑点.用作数值表示中的小数点分号;用作不显示计算结果指令的“结尾”标志;用作不显示计算结果指令与其后指令的分隔;用作数组的行间分隔符;冒号:用以生成一维数组;用作单下标援引时,表示全部元素构成的长列;用作多下标援引时,表示那维上的全部注释号%由它“启首”后的所有物理行部分被看作非执行的注释单引号对‘’字符串记述符圆括号()在数组援引时用;函数指令输入宗量列表时用方括号[]输入数组时用;函数指令输出宗量列表时用花括号{}元胞数组记述符下连符_(为使人易读)用作一个变量、函数或文件名中的连字符续行号….由4个以上连续黑点构成。它把其下的物理行看作该行的“逻辑”继续,以构成一个“较长”的完整指令“At”号@放在函数名前,形成函数句柄;放在目录名前,形成用户对象类目录[说明]为保证指令正确执行,以上符号一定要在英文状态下输入。1414指令行中的标点符号名称标点作用空格(为机器辨认)用作数组元素分隔符号逗号,用作要显示计算结果的指令与其后指令的分隔;用作输入量与输入量之间的分隔符;用作数组元素分隔符号黑点.用作数值表示中的小数点分号;用作不显示计算结果指令的“结尾”标志;用作不显示计算结果指令与其后指令的分隔;用作数组的行间分隔符;冒号:用以生成一维数组;用作单下标援引时,表示全部元素构成的长列;用作多下标援引时,表示那维上的全部注释号%由它“启首”后的所有物理行部分被看作非执行的注释单引号对‘’字符串记述符圆括号()在数组援引时用;函数指令输入宗量列表时用方括号[]输入数组时用;函数指令输出宗量列表时用花括号{}元胞数组记述符下连符_(为使人易读)用作一个变量、函数或文件名中的连字符续行号….由4个以上连续黑点构成。它把其下的物理行看作该行的“逻辑”继续,以构成一个“较长”的完整指令“At”号@放在函数名前,形成函数句柄;放在目录名前,形成用户对象类目录[说明]为保证指令正确执行,以上符号一定要在英文状态下输入。1515命令窗口中指令行的编辑为方便操作,MATLAB不但允许用户在指令窗中对输入指令进行各种编辑和运行,而且允许用户对已经输入的指令进行回调、编辑和重运行。16键名作用↑前寻式调回已输入过的指令行↓后寻式调回已输入过的指令行←在当前行中左移光标→在当前行中右移光标PageUp前寻式翻阅当前窗中的内容PageDown后寻式翻阅当前窗中的内容Home使光标移到当前行的首端End使光标移到当前行的尾端Delete删去光标右边的字符Backspace删去光标左边的字符Esc清除当前行的全部内容16WorkspaceBrowser工作空间窗口简介列出数据的变量信息,包括变量名、变量数组大小(尺寸)、变量字节大小和变量类型。基本工作空间或简称为工作空间(Workspace)
MATLAB在进行运算时,将变量存储在内存中,这些存储变量的内存空间称为基本工作空间,简称工作空间。暂时(临时)工作空间:每当MATLAB在调用执行某一函数时,即进入该函数的暂时工作空间(可视为基本工作空间的下层空间),函数在此空间进行运算,而不影响到基本空间内的变量,当函数执行结束后,MATLAB会同时删除函数的暂时工作空间,并回到基本空间。1717内存变量查阅、删除的指令操作法在指令窗中运用who,whos查阅MATLAB内存变量。who命令:查看现存于基本空间的变量whos命令:详细查看现存于基本空间的变量在指令窗中运用clear指令可以删除内存(工作空间内)的某一或所有变量如:clearA,clearall1818M脚本文件编写初步M脚本文件该文件中的指令形式和前后位置,与解决同一个问题时在命令窗中输入的那组指令没有任何区别。MATLAB在运行这个脚本时,只是简单地从文件中读取一条条指令,送到MATLAB中去执行。与在指令窗中直接运行命令一样,脚本文件运行产生的变量都驻留在MATLAB基本工作空间中。文件扩展名是“.m”。1919M文件调试M语言文件的编辑器——meditor不仅仅是一个文件编辑器,同时还是一个可视化的调试开发环境。在M文件编辑器中可以对M脚本文件、函数文件进行调试,以排查程序的错误。M文件的调试不仅可以在文件编辑器中进行,而且还可以在命令行中结合具体的命令进行,但是过程相对麻烦一些,所以重点讲述在M文件编辑器中进行可视化调试的过程。一般地来说,应用程序的错误有两类,一类是语法错误,另外一类是运行时的错误。其中,语法错误包括了词法或者文法的错误,例如函数名称的拼写错误等。而运行时的错误是指那些程序运行过程中得到的结果不是用户需要的情况。但是,由于M文件是一种解释型语言,语法错误和运行时的错误都只有在运行过程中才能发现,所以程序的调试往往是在程序无法得到正确结果时进行程序修正的惟一手段。20
20M语言的断点(Breakpoints)
为了能够有效地处理各种情况,M语言的断点类型除了类似C语言的用户定义的断点外,还有几种自动断点,分别为*StopifError。*StopifWarning。*StopifNaNorInf。*StopifAllErrors。这些自动断点可以在程序中设置,当程序运行过程中发生了错误或者警告,则程序运行中断,进入调试状态。2121M文件编辑器的Breakpoints菜单2222调试程序的按钮2323小结MATLAB提供了一种高级编程语言——M语言,这种语言的语法结构与C语言非常类似,任何熟悉C语言的用户学习使用M语言都不会有任何障碍。尽管M语言是一种解释性的编程语言,但是随着MATLAB版本的不断升级,以及充分利用MATLAB提供的各种编程技巧,能够有效提高M语言应用程序的执行效率,使M语言成为了工程领域中最适合进行算法开发验证的编程语言。2424MATLAB基础一、MATLAB的工作方式二、如何获取帮助 三、表达式——变量、数值、算数运算符、关系运算符、逻辑运算符、冒号运算符四、数组及其运算五、函数文件六、循环(FOR、WHILE
循环)七、基本绘图语句2525一、MATLAB的工作方式(1)窗口命令方式(2)运行以.m
为扩展名磁盘文件2626工作方式举例%用plot函数画一个方波t=[-100113];x=[001100];plot(t,x);xlabel('t');ylabel('x(t)');axis([-1302]);直接在命令窗口输入以上命令建一个名字为my_file.m的文件,然后在命令窗口输入文件名及回车。2727二、如何获取帮助命令窗口输入:help+函数名例如helpplot2828三、表达式不需要变量的类型说明变量名的第一个字符必须是字母变量名长度:不超过31个字符大写和小写的字母视为不同的字符
例如:num_students=25MATLAB默认的预定义变量
变量2929MATLAB默认的预定义变量每当MATLAB启动时,预定义变量(Predefinedvariable)就被产生。30建议:不要对预定义变量名重新赋值,以免产生混淆。预定义变量含义预定义变量含义ans计算结果的缺省变量名NaN或nan不是一个数(NotaNumber),如0/0,∞/∞eps机器零阀值nargin函数输入宗量数目Inf或inf无穷大,如1/0nargout函数输入宗量数目i或j虚单元i=jrealmax最大正实数pi圆周率∏realmin最小正实数30MATLAB默认的预定义变量每当MATLAB启动时,预定义变量(Predefinedvariable)就被产生。31建议:不要对预定义变量名重新赋值,以免产生混淆。预定义变量含义预定义变量含义ans计算结果的缺省变量名NaN或nan不是一个数(NotaNumber),如0/0,∞/∞eps机器零阀值nargin函数输入宗量数目Inf或inf无穷大,如1/0nargout函数输入宗量数目i或j虚单元i=jrealmax最大正实数pi圆周率∏realmin最小正实数31三、表达式
数值
MATLAB用常规的十进制表示数值用i或j作为后缀来表示复数的虚部例1.235e5表示1.235105,x=2+3j
abs(x)
求复数x的模
angle(x)
求复数x的相角(弧度)
real(x)
求复数x的实部
imag(x)
求复数x的虚部
conj(x)
求复数x的共轭3232三、表达式
运算符号
(1)算数运算符
+
加
-
减
* 乘
/ 除
^ 乘方‘ 矩阵的复共轭转置3333三、表达式
运算符号
(2)逻辑运算符
A&B 逻辑与(and)A|B 逻辑或(or)~A 逻辑非(not)
值为0时表示逻辑假(F),其它任何非零值表示逻辑真。3434三、表达式
运算符号
(3)关系运算符A<B 小于
A>B 大于
A<=B小于等于
A>=B大于等于
A==B等于
A~=B 不等于3535三、表达式
运算符号(4)冒号运算符表达式1:10
表示产生一个行向量,它的值为
12345678910表达式10:-2:1
表示产生一个递减的行向量,它的值为
108642
3636四、数组及其运算1.数组的构造用冒号:产生数组例x=2:5
产生一个数组,它的值为x(1)=2,x(2)=3,x(3)=4,x(4)=5例x=linspace(0,2,11)将区间[0,2]均匀抽样11点作为数组x。
给2维数组赋值时,用分号表示一行的结束。如:z=[12;34]。用linspace产生数组37371.数组的构造MATLAB提供了一些产生基本矩阵的函数
zeros
产生矩阵元素全为0的矩阵
ones
产生矩阵元素全为1的矩阵
rand
产生(0,1)均匀分布随机数矩阵
randn
产生正态分布随机数矩阵四、数组及其运算38382.数组的运算数组和一个标量相加或相乘
例y=x-1z=3*x2个数组的对应元素相乘除.*./
例z=x.*y确定数组大小的函数
size(A)
返回值数组A的行数和列数(二维)。
length(B)
确定数组B的元素个数(一维)。四、数组及其运算3939五、函数文件M文件的第一行包含function。功能:建立一个函数,可以同MATLAB的库函数一样使用。4040五、函数文件[例1]编一个绘制图示波形的函数。functiony=tri(t)y=[abs(t)<=1].*(1-abs(t));调用函数tri,并画出它的波形t=-2:0.05:2;plot(t,tri(t));解:4141六、For循环[例2]编写计算s=1+2+3+…+100的MATLAB程序。s=0;forn=1:100s=s+n;end解:4242七、While循环s=0;n=1;eps=1e-6;while1/(n*n)>epss=s+1/(n*n);n=n+1;end[例3]计算的值,且误差小于10-6。fprintf('s=%.5f\n',s)解:4343八、plot函数——绘图函数(continuous)t=linspace(0,4*pi,512);plot(t,sin(t),t,cos(t),'-.');title('myfigure');xlabel('t');legend('sin(t)','cos(t)');4444八、plot函数——绘图函数(continuous)4545九、stem函数——绘图函数(discrete)k=0:39;stem(k,cos(0.9*pi*k));title('cos(0.9\pik)');4646九、stem函数——绘图函数(discrete)cos(0.9k)波形4747利用MATLAB进行信号与系统分析信号的MATLAB表示利用MATLAB进行系统的时域分析利用MATLAB进行信号的频域分析利用MATLAB进行系统的频域特性利用MATLAB进行连续系统的复频域分析利用MATLAB进行离散系统的复频域分析4848
信号的MATLAB表示一、基本信号的MATLAB表示
指数信号Aeat、指数序列ak、抽样函数Sa(t)、正弦型信号、矩形脉冲信号、三角脉冲信号二、信号基本运算的MATLAB实现
尺度变换、翻转、时移、相加、相乘、差分与求和、微分与积分
4949一、基本信号的MATLAB表示指数信号Aeat y=A*exp(a*t);指数序列ak 幂运算a.^k实现正弦型信号 内部函数cos()和sin()抽样函数Sa(t) sinc(t)矩形脉冲信号 y=rectpuls(t,width)三角波脉冲信号 y=tripuls(t,width,skew)5050一、基本信号的MATLAB表示%decayingexponentialt=0:001:10;A=1;a=-0.4;ft=A*exp(a*t);plot(t,ft)t=0:0.1:10;A=1;a=-0.4;ft=A*exp(a*t);stem(t,ft)5151一、基本信号的MATLAB表示%rectpulst=0:0.001:4;T=1;ft=rectpuls(t-2*T,T);plot(t,ft)axis([0,4,-0.5,1.5])5252一、基本信号的MATLAB表示%tripulst=-3:0.001:3;ft=tripuls(t,4,0.5);plot(t,ft)ft=tripuls(t,4,1);5353一、基本信号的MATLAB表示%unitimpulssequencek=-50:50;delta=[zeros(1,50),1,zeros(1,50)];stem(k,delta)function[f,k]=impseq(k0,k1,k2)%产生f[k]=delta(k-k0);k1<=k<=k2k=[k1:k2];f=[(k-k0)==0];k0=0;k1=-50;k2=50;[f,k]=impseq(k0,k1,k2);stem(k,f)5454一、基本信号的MATLAB表示%unitstepsequencek=-50:50;uk=[zeros(1,50),ones(1,51)];stem(k,uk)function[f,k]=stepseq(k0,k1,k2)%产生f[k]=u(k-k0);k1<=k<=k2k=[k1:k2];f=[(k-k0)>=0];k0=0;k1=-50;k2=50;[f,k]=stepseq(k0,k1,k2);stem(k,f)5555二、信号基本运算的MATLAB实现t=-3:0.001:3;ft1=tripuls(2*t,4,0.5);subplot(2,1,1)plot(t,ft1)title(‘x(2t)')ft2=tripuls((2-2*t),4,0.5);subplot(2,1,2)plot(t,ft2)title(‘x(2-2t)')1.信号的尺度变换、翻转、时移(平移)5656[例1]已知三角波x(t),用MATLAB画出的x(2t)和x(2-2t)波形。解:5757二、信号基本运算的MATLAB实现2.信号的相加与相乘相加用算术运算符“+”实现相乘用数组运算符“.*”实现[例2]画信号Aeatcos(w0t+f)的波形。解:
t=0:0.001:8;A=1;a=-0.4;w0=2*pi;phi=0;ft1=A*exp(a*t).*sin(w0*t+phi);plot(t,ft1)5858二、信号基本运算的MATLAB实现3.离散序列的差分与求和连续信号的微分与积分差分 y=diff(f);求和 y=sum(f(k1:k2));
微分y=diff(f)/h;h为数值计算所取时间间隔
定积分quad(‘function_name’,a,b);function_name为被积函数名,a和b指定积分区间。5959二、信号基本运算的MATLAB实现3.离散序列的差分与求和连续信号的微分与积分[例3]已知三角波x(t),画出其微分与积分的波形。解:
%differentiation
h=0.001;t=-3:h:3;y1=diff(f2_2(t))*1/h;plot(t(1:length(t)-1),y1)%integrationt=-3:0.1:3;f2=@(t)tripuls((t),4,0.5);forx=1:length(t)y2(x)=quad(f2,-3,t(x));endplot(t,y2)6060三角波x(t)微分与积分的波形6161
利用MATLAB进行系统的时域分析一、连续时间系统零状态响应的求解二、连续时间系统冲激响应和阶跃响应的求解三、离散时间系统零状态响应的求解四、离散时间系统单位脉冲响应的求解五、离散卷积的计算6262一、连续时间系统零状态响应的求解t表示计算系统响应的抽样点向量;a=[a3,a2,a1,a0];b=[b3,b2,b1,b0];sys=tf(b,a)y=lsim(sys,x,t)sys=tf(b,a)b和a分别为微分方程右端和左端各项的系数向量。x是系统输入信号向量;sys是LTI系统模型,借助tf函数获得6363二、连续系统冲激响应和阶跃响应求解
连续时间系统冲激响应可用impulse函数直接求出,其调用形式为y=impulse(sys,t)
连续时间系统阶跃响应可用step函数直接求出,其调用形式为y=step(sys,t)t表示计算系统响应的抽样点向量;sys是LTI系统模型。6464三、离散时间系统零状态响应的求解 b,a分别是差分方程左、右端的系数向量;b=[b0,b1,b2,,bM];a=[a0,a1,a2,,aN];可用MATLAB表示为y=filter(b,a,x)x表示输入序列;y表示输出序列。6565四、离散时间系统单位脉冲响应的求解b,a分别是差分方程左、右端的系数向量;k表示输出序列的取值范围;h就是单位脉冲响应。h=impz(b,a,k)6666五、离散卷积的计算例如(s3+2s+3)(s2+3s+2)可用下面MATLAB语句求出。
a=[1,0,2,3]; b=[1,3,2]; c=conv(a,b)c=conv(a,b)式中a,b为待卷积两序列的向量表示,c是卷积结果。conv函数也可用于计算两个多项式的积6767[例1]
求系统y"(t)+2y'(t)+100y(t)=10x(t)的零状态响应,已知x(t)=sin(2pt)u(t)。解:%program3_1微分方程求解ts=0;te=5;dt=0.01;sys=tf([10],[12100]);t=ts:dt:te;x=sin(2*pi*t);y=lsim(sys,x,t);plot(t,y);xlabel('Time(sec)')ylabel('y(t)')6868[例2]
求系统y"(t)+2y'(t)+100y(t)=10x(t)的零状态响应,已知x(t)=d(t)。解:%program3_2连续时间系统的冲激响应ts=0;te=5;dt=0.01;sys=tf([10],[12100]);t=ts:dt:te;y=impulse(sys,t);plot(t,y);xlabel('Time(sec)')ylabel('h(t)')6969[例3]
分析噪声干扰的信号x[k]=s[k]+d[k]通过M点滑动平均系统的响应,
其中s[k]=(2k)0.9k是原始信号,d[k]是噪声。R=51;d=rand(1,R)-0.5;k=0:R-1;s=2*k.*(0.9.^k);x=s+d;figure(1);plot(k,d,'r-.',k,s,'b--',k,x,'g-');M=5;b=ones(M,1)/M;a=1;y=filter(b,a,x);figure(2);plot(k,s,'b--',k,y,'r-');解:7070[例3]
分析噪声干扰的信号x[k]=s[k]+d[k]通过M点滑动平均系统的响应,
其中s[k]=(2k)0.9k是原始信号,d[k]是噪声。噪声干扰信号x[k]=s[k]+d[k]通过M点滑动平均系统的响应如图。7171[例4]
求系统y[k]+3y[k-1]+2y[k-1]=10x[k]的单位脉冲响应。%program3_4离散系统的单位脉冲响应k=0:10;a=[132];b=[10];h=impz(b,a,k);stem(k,h)解:7272[例5]计算x[k]*y[k]并画出卷积结果,已知x[k]={1,2,3,4;k=0,1,2,3},
y[k]={1,1,1,1,1;k=0,1,2,3,4}。%program3_5x=[1,2,3,4];y=[1,1,1,1,1];z=conv(x,y);N=length(z);stem(0:N-1,z);解:7373
利用MATLAB进行信号的频域分析一、连续周期信号频谱的MATLAB实现二、用数值积分分析连续非周期信号频谱三、离散周期信号频谱的MATLAB实现7474一、连续周期信号频谱的MATLAB实现
频谱Cn一般为复数,可分别利用abs和angle函数获得其幅度频谱和相位频谱。其调用格式分别为x=abs(Cn)y=angle(Cn)
周期信号的频谱Cn为离散信号,可以用stem画出其频谱图。7575[例1]试用MATLAB画出图示周期三角波信号的频谱。解:周期信号的频谱为7676画三角波信号频谱的MATLAB程序N=8;n1=-N:-1;%计算n=-N到-1的Fourier系数c1=-4*j*sin(n1*pi/2)/pi^2./n1.^2;c0=0;%计算n=0时的Fourier系数n2=1:N;%计算n=1到N的Fourier系数c2=-4*j*sin(n2*pi/2)/pi^2./n2.^2;cn=[c1c0c2];n=-N:N;subplot(2,1,1);stem(n,abs(cn));ylabel('Cn的幅度');subplot(2,1,2);stem(n,angle(cn));ylabel('Cn的相位');xlabel('\omega/\omega0');7777程序运行结果7878[例2]求周期矩形脉冲的Fourier级数表示式,并用MATLAB求出由前N项Fourier级数系数得出的信号近似波形。取A=1,T=2,t=1,w0=p解:7979%Gibbsphenomenont=-2:0.001:2;N=input('Numberofharmonics=');c0=0.5;xN=c0*ones(1,length(t));
%dccomponentforn=0:1:N
xN=xN+cos(pi*n*t)*sinc(n/2);%正弦分量为零endplot(t,xN);8080%GibbsphenomenonN=5N=15N=50N=5008181二、用数值积分分析连续非周期信号频谱数值函数积分quad可用来计算非周期信号频谱F
是一个字符串,它表示被积函数的文件名;a,b
分别表示定积分的下限和上限。y=quad('F',a,b)8282[例3]试用数值方法近似计算三角波信号的频谱。X(jw)=Sa2(w
/2)解:
图示三角波可表示为三角波信号频谱的理论值为8383[例3]试用数值方法近似计算三角波信号的频谱。w=linspace(-6*pi,6*pi,512);N=length(w);X=zeros(1,N);sf=@(t,w)(t>=-1&t<=1).*(1-abs(t)).*exp(-j*w*t);fork=1:NX(k)=quad(sf,-1,1,[],[],w(k));endfigure(1);plot(w,real(X));title('')xlabel('\omega');ylabel(‘X(j\omega)');figure(2);plot(w,real(X)-sinc(w/2/pi).^2);xlabel('\omega');title('计算误差');8484[例3]试用数值方法近似计算三角波信号的频谱。运行结果8585三、离散周期信号频谱的MATLAB的实现函数fft可用来计算离散周期信号频谱x
是离散周期信号0~N-1一个周期的序列值;Xm=fft(x)Xm
是离散周期信号频谱在0~N-1的值。函数fft还可用来计算离散非周期信号频谱、连续周期信号和连续非周期信号的频谱。8686[例4]计算下图所示周期矩形序列的频谱。%Program4_4计算离散周期矩形序列的频谱N=32;M=4;%定义周期矩形序列的参数x=[ones(1,M+1)zeros(1,N-2*M-1)ones(1,M)];%产生周期矩形序列X=fft(x);%计算DFS系数m=0:N-1;stem(m,real(X));%画出频谱X的实部title('X[m]的实部');xlabel('m')figurestem(m,imag(X));%画出频谱X的虚部title('X[m]的虚部');xlabel('m')解:8787[例4]计算下图所示周期矩形序列的频谱8888
利用MATLAB进行系统频域分析一、连续系统频率响应的计算二、周期信号通过系统的响应三、离散系统频率响应的计算8989一、连续系统频率响应的计算b
分子多项式系数;a
分母多项式系数;w
需计算的H(jw)的抽样点。
(数组w中少需包含两个w的抽样点)。计算频响的MATLAB函数H=freqs(b,a,w)9090一、连续系统频响特性的计算[例1]三阶归一化的Butterworth低通滤波器的系统函数为w=linspace(0,5,200);b=[1];a=[1221];h=freqs(b,a,w);subplot(2,1,1);plot(w,abs(h));subplot(2,1,2);plot(w,angle(h));
试画出|H(jw)|和(w)。解:9191一、连续系统频响特性的计算三阶Butterworth低通滤波器的幅度响应和相位响应9292二、周期信号通过系统的响应[例2]周期方波通过RC系统的响应。解:9393二、周期信号通过系统的响应[例2]
周期方波通过RC系统的响应。%p5_2PeriodicsignalpassLTIsystemT=4;w0=2*pi/T;RC=0.1;t=-6:0.01:6;N=51;c0=0.5;xN=c0*ones(1,length(t));
%dcforn=1:2:N%evenharmonicsarezeroH=abs(1/(1+j*RC*w0*n));phi=angle(1/(1+j*RC*w0*n));
xN=xN+H*cos(w0*n*t+phi)*sinc(n*0.5);endplot(t,xN);xlabel(['timeRC=',num2str(RC)]);grid;set(gca,'xtick',[-5-3-10135]);9494二、周期信号通过系统的响应[例2]周期方波通过RC系统的响应。9595三、离散系统频率响应的计算计算频率响应的MATLAB函数b
分子的系数;a
分母系数;w
抽样的频率点(至少2点),w在0~2p之间。h=freqz(b,a,w)9696三、离散系统频率响应的计算b=[1];a1=[1-0.9];a2=[10.9];w=linspace(0,2*pi,512);h1=freqz(b,a1,w);h2=freqz(b,a2,w);plot(w/pi,abs(h1),w/pi,abs(h2),':');legend('\alpha=0.9','\alpha=-0.9');解:[例3]画出的幅度响应曲线。9797三、离散系统频率响应的计算[例3]画出的幅度响应曲线。9898
利用MATLAB进行连续系统的复频域分析一、部分分式展开的MATLAB实现二、H(s)的零极点与系统特性的MATLAB计算9999一、部分分式展开的MATLAB实现[r,p,k]=residue(num,den)num,den分别为X(s)分子多项式和分母多项式的系数向量。r为部分分式的系数;p为极点;k为多项式的系数。若为真分式,则k为空。100100二、H(s)的零极点与系统特性的MATLAB计算计算多项式根roots的函数可用于计算H(s)的零极点。r=roots(D)%计算多项式D(s)的根H(s)零极点分布图可用pzmap函数画出,调用形式为pzmap(sys)表示画出sys所描述系统的零极点图。101101[例1]
用部分分式展开法求X(s)的反变换。%program6_1formatrat%将结果数据以分数的形式输出num=[12];den=[1430];[r,p]=residue(num,den)运行结果为
r=-1/6,-1/2,2/3 p=-3,-1,0故X(s)可展开为解:102102[例2]用部分分式展开法求X(s)的反变换。%pr
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 蜜饯制作与水果加工副产物研发考核试卷
- 灵活可变包装考核试卷
- 银冶炼与循环经济考核试卷
- 羊的饲养羔羊饲养关键技术考核试卷
- 儿童口腔功能式矫治器
- 新生儿危重症护理
- 呼吸机消毒与保养规范
- 呼气性呼吸困难
- 饮食与疾病康复的关系
- Opamtistomig-生命科学试剂-MCE
- 变速箱厂总平面布置设计课程设计说明书
- 最新口腔医学修复工艺质量管理学教学大纲教案
- 材料送检计划表(共7页)
- 四辊轧机的计算
- 海洋牧场生态融合渔光互补项目建议书写作模板
- 07-20电子病历详细设计
- (完整word版)浙江监理全套表格
- 车库电动卷帘门PLC控制设计实用教案
- 系统是成功的秘密
- 粮食局保护粮食安全工作个人先进事迹材料范文
- 基于医院物流机器人构建医院智慧物流新业态(PPT课件)
评论
0/150
提交评论