Matlab及其在信号与系统中的应用.

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

第9章信号与系统分析的MATLAB实现•MATLAB简介•信号的MATLAB表示•利用MATLAB进行系统的时域分析•利用MATLAB进行信号的频域分析•利用MATLAB进行连续系统的S域分析•利用MATLAB进行离散系统的Z域分析•利用MATLAB进行系统的状态变量分析•MATLAB高级编程§9.1MATLAB简介Matlab是“矩阵实验室”(MatrixLaboratory)的缩写。它一矩阵运算为基础,以简便的“科学便笺式”编程语言,交互的集成环境,强大的图形可视化功能,广泛应用于科学、工程、和绘图的各种领域,受到高度好评。特点:(1)数值计算功能强,每个数值元素都视为复数,用双精度格式,编程简化;(2)具有符合计算功能;(3)简单而强大的作图功能;(4)人机界面适合科技人员;(5)功能多、可扩展性强、有多种工具箱作专门处理。MATLAB简介•1.MATLAB的工作方式(1)窗口命令方式(2)运行以.M为扩展名磁盘文件•2.获取帮助命令窗口输入:help+函数名例如helpplot工作方式举例%用plot函数画一个方波的程序t=[-100113];f=[001100];plot(t,f);xlabel('t');ylabel('f(t)');axis([-1302]);直接输入以上命令建一个名字为my_file.M的文件,然后在命令窗口输入文件名及回车。3.表达式——变量•不需要变量的类型说明•变量名的第一个字符必须是字母•变量名长度:不超过31个字符•大写和小写的字母视为不同的字符例如:num_students=25•特殊变量:pi表示圆周率,inf表示无穷大,NaN(NotaNumber)表示不定量,如0/0。3.表达式——数值•MATLAB用常规的十进制表示数值•用i或j作为后缀来表示复数的虚部例1.235e5表示1.235105,x=2+3jabs(x)求复数x的模angle(x)求复数x的相角(弧度)real(x)求复数x的实部imag(x)求复数x的虚部conj(x)求复数x的共轭3.表达式——运算符号算数运算符•+加•-减•*乘•/除•^乘方•‘矩阵的复共轭转置3.表达式——运算符号逻辑运算符•A&B逻辑与(and)•A|B逻辑或(or)•~A逻辑非(not)值为0时表示逻辑假(F),其它任何非零值表示逻辑真。3.表达式——运算符号关系运算符•AB小于•AB大于•A=B小于等于•A=B大于等于•A==B等于•A~=B不等于3.表达式——运算符号冒号运算符•表达式1:10表示产生一个行向量,它的值为12345678910•表达式10:-2:1表示产生一个递减的行向量,它的值为1086424.数组(1)数组的构造用冒号:产生数组例x=2:5产生一个步长为1的数组,它的值为x(1)=2,x(2)=3,x(3)=4,x(4)=5x=linspace(0,2,11)将区间[0,2]均匀抽样11点作为数组x给2维数组赋值时,用分号表示一行的结束,如:z=[12;34]。用linspace产生数组4.数组MATLAB提供了一些产生基本矩阵的函数•zeros产生矩阵元素全为0的矩阵•ones产生矩阵元素全为1的矩阵•rand产生(0,1)均匀分布随机数矩阵•randn产生正态分布随机数矩阵4.数组——数组的运算•数组和一个标量相加或相乘例y=x-1z=3*x•2个数组的对应元素相乘、除.*./例z=x.*y•确定数组大小的函数size(A)返回值数组A的行数和列数(二维)length(B)确定数组B的元素个数(一维)5.脚本与函数•脚本:没有输入输出参数,仅在平台中进行数据操作•函数:能够接受输入参数并返回输出参数,函数中使用内部变量。包含MATLAB语言代码的文件称为M文件,即MATLAB应用程序。M文件分两种:脚本•调用脚本时,MATLAB简单执行该文件中的命令•脚本可以对工作平台中已存在的数据操作,也可以创建新的操作数据•尽管脚本创建的所有变量都保存在工作平台中以备以后的计算应用脚本也可以使用图形函数生成图形。假设有一名为magicrank.m的脚本文件,代码如下:r=zeros(1,32);forn=3:32r(n)=rank(magic(n));%矩阵求秩函数endrbar(r)%直方图绘制函数函数•M文件的第一行包含function•功能:建立一个函数,可以同MATLAB的库函数一样使用•定义结构:function输出参数=文件名(输入参数)•调用格式:返回值=函数名(输入参数)例:编一个绘制图示波形的函数。functiony=tri(t)y=[abs(t)=1].*(1-abs(t));调用函数tri,并画出它的波形t=-2:0.05:2;plot(t,tri(t));6.For循环例:编写计算s=1+2+3+...+100的MATLAB程序s=0;forn=1:100s=s+n;end7.While循环s=0;n=1;eps=1e-6;+++222312111swhile1/(n*n)epss=s+1/(n*n);n=n+1;end例:计算的值,且误差小于10-6fprintf('s=%.5f\n',s)8.plot函数--绘图函数(continuous)t=linspace(0,4*pi,512);plot(t,sin(t),t,cos(t),'-.');title('myfigure');xlabel('t');legend('sin(t)','cos(t)');9.stem函数--绘图函数(discrete)k=0:39;stem(k,cos(0.9*pi*k));title('cos(0.9\pik)');•基本信号的MATLAB表示(指数信号Aeat,指数序列ak,抽样函数Sa(t),正弦型信号,矩形脉冲信号,三角脉冲信号•信号基本运算的MATLAB实现(尺度变换、翻转、时移、相加、相乘、差分与求和、微分与积分)§9.2信号的MATLAB表示基本信号的MATLAB表示•指数信号Aeaty=A*exp(a*t);•指数序列ak幂运算a.^k实现•正弦型信号内部函数cos()和sin()•抽样函数Sa(t)sinc(t)——也叫辛格函数•矩形脉冲信号y=rectpuls(t,width)•三角波脉冲信号y=tripuls(t,width,skew)1、求自然对数求ln(x):Log(x)例:Log(2)=0.69312、求指数求a^b:Power(a,b)例:求2^3Ans=power(2,3)3、求行列式求矩阵A的行列式:det(A);例:A=[12;34]则:det(A)=-24、多项式的乘法运算函数conv(p1,p2)用于求多项式p1和p2的乘积。这里,p1、p2是两个多项式系数向量例:求多项式和的乘积。命令如下:p1=[1,8,0,0,-10];p2=[2,-1,3];c=conv(p1,p2)43810xx+-223xx-+5、多项式除法函数[q,r]=deconv(p1,p2)用于多项式p1和p2作除法运算,其中q返回多项式p1除以p2的商式,r返回p1除以p2的余式。这里,q和r仍是多项式系数向量。上例中,用[q,r]=deconv(p1,p2)则为p1和p2除法。例:sin(x):对弧度求正弦cos(x):对弧度求余弦tan(x):对弧度求正切exp(x):以自然系数为底的指数log(x):以自然系数为底的对数数abs(x):求绝对值real(x):求复数的实部imag(x)求复数的虚部angle(x)求复数的相角sqrt(x)求平方根max(A)求数组元素中的最大值min(A)求数组元素中的最小值mean(A)求数组元素中的平均值sum(A)求数组元素中的和conj(x)求复数的共轭sinc(x)辛格函数基本数学函数常用的作图函数1、二维图:plot(x,y,linespec),linespec参数,用于对图像外观属性的控制,包括线条的形状,颜色和点的形状,颜色。stem(x,y);绘制脉冲杆图图形。stairs(x,y);绘制阶梯图图形。loglog;绘双对数坐标图。2、分割图像子窗口:subplot(m,n,p),将图像分为m╳n个子区域,在第p个区域中绘制图像。3、坐标轴:axis(xmin,xmax,ymin,ymax).指定当前图像中x轴和y轴的范围。4、图形注释:1)标题:title(‘图形名字’)。2)坐标轴名:xlabel(‘x轴的名称’),ylabel(‘y轴的名称’),grid(画网格线),text(在图中加文字说明)特殊符号的输入:\alpha的输入,则自动转变成,а例:指数函数t=0:0.01: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)脉冲方波•t=0:0.001:4;•T=1;•ft=rectpuls(t-2*T,T);•plot(t,ft)•axis([0,4,-0.5,1.5])时间移位2T脉冲宽度三角波t=-3:0.001:3;ft=tripuls(t,4,0.5);plot(t,ft)ft=tripuls(t,4,1);宽度斜率单位脉冲序列k=-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)单位阶跃序列k=-50:50;uk=[zeros(1,50),ones(1,50)];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)plot3函数与plot函数用法十分相似,其调用格式为:plot3(x1,y1,z1,选项1,x2,y2,z2,选项2,…,xn,yn,zn,选项n)其中每一组x,y,z组成一组曲线的坐标参数,选项的定义和plot函数相同。当x,y,z是同维向量时,则x,y,z对应元素构成一条三维曲线。当x,y,z是同维矩阵时,则以x,y,z对应列元素绘制三维曲线,曲线条数等于矩阵列数。三维坐标图例:绘制三维曲线t=0:pi/100:20*pi;x=sin(t);y=cos(t);z=t.*sin(t).*cos(t);plot3(x,y,z);title('Linein3-DSpace');xlabel('X');ylabel('Y');zlabel('Z');例:绘制三维曲面利用meshgrid函数产生平面区域内的网格坐标矩阵。其格式为:x=a:d1:b;y=c:d2:d;[X,Y]=meshgrid(x,y);语句执行后,矩阵X的每一行都是向量x,行数等于向量y的元素的个数,矩阵Y的每一列都是向量y,列数等于向量x的元素的个数。1.产生三维数据2.绘制三维曲面的函数surf函数和mesh函数的调用格式为:mesh(x,y,z,c):画网格曲面,将数据点在空间中描出,并连成网格。surf(x,y,z,c):画完整曲面,将数据点所表示曲面画出。一般情况下,x,y,z是维数相同的矩阵。x,y是网格坐标矩阵,z是网格点上的高度矩阵,c用于指定在不同高度下的颜色范围。[x,y]=meshgrid(0:0.25:4*pi);%在[0,4pi]×[0,4pi]区域生成网格坐标z=sin(x+sin(y))-x/10;mesh(x,y,z);axis([04*pi04*pi-2.51]);例:绘制三维曲面图z=sin(x+sin(y

1 / 47
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功