matlab中的一些函数

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

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

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

资源描述

函数1.step阶跃响应指令(连续函数)dstep阶跃响应指令(离散函数)clearclcnum=[2-3.41.5];den=[1-1.60.8];dstep(num,den)gridontitle('离散系统阶跃响应')xlabel('时间')ylabel('振幅')clearclcnum=[2-3.41.5];den=[1-1.60.8]step(num,den)gridontitle('连续系统阶跃响应')xlabel('时间')ylabel('振幅')2.c2dm()函数,连续系统的离散化在MATLAB软件中对连续系统的离散化是应用c2dm()函数实现的,c2dm()函数的一般格式为3.函数initial(),dinitial()对于连续系统由初始状态所引起的响应,零输入响应,可由函数initial()来求得,其调用格式为[y,x,t]=initial(A,B,C,D,x0)[y,x,t]=initial(A,B,C,D,x0,t)其中x0为初始状态.同理,对于离散系统的零输入响应函数调用格式为:[y,x,t]=dinitial(A,B,C,D,x0)[y,x,t]=dinitial(A,B,C,D,x0,n)4.axis坐标轴范围axis一般用来设置axes的样式,包括坐标轴范围,可读比例等axis([xminxmaxyminymax])axis([xminxmaxyminymaxzminzmaxcmincmax])坐标轴设置5.函数ss2zp()(与zplane()连用)MATLAB还提供了一个类似的函数ss2zp()。该函数的功能是直接根据系统的状态方程描述求取系统的零点、极点和增益,不必先化成传递函数描述形式。其基本调用格式与tf2zp()函数类似,只是多了一个输入量选择的参数:[Z,P,K]=ss2zp(A,B,C,D,iu)其中(A,B,C,D)是系统的状态方程描述的系数矩阵,iu表示对系统的第iu个输入量求零点、极点和增益;Z是求得的零点矩阵;P是求得的极点矩阵,Z的列数与输出量y的个数一样多,行数视零点个数的多少而定;K是求得的增益列向量,其维数等于输出量y的个数。6.zplane()zplane函数用于画出线性系统在Z平面上的零极点。有两种使用方法:在已知零极点时,例如某滤波器的零点为-1/2,一对共轭极点为和时,只要输入命令zer=-0.5;pol=0.9*exp(j*2*pi*[-0.30.3]');zplane(zer,pol)即可画出零极点。另一种情况:已知系统的系统函数系数向量b和a,则可通过调用zplane(b,a)绘出零极点。)3.0(29.0je)3.0(29.0je这种情形下,zplane函数先求得系统函数的零点和极点,然后绘出零极点图。例子clearA1=[-1.5,-0.8,0,0;0.8,0,0,0;0.3,0.4,-4.0,-1.25;0,0,-1.25,0];B1=[1;0;1;0];C1=[1,2,1,2];D1=0;t=0.5;[A,B,C,D]=c2dm(A1,B1,C1,D1,t,'m');subplot(2,2,1)dstep(A,B,C,D)gridontitle('离散阶跃响应')xlabel('时间')ylabel('振幅')subplot(2,2,2)dimpulse(A,B,C,D)gridontitle('离散冲激响应')ylabel('振幅')xlabel('时间')subplot(2,2,3)x0=[1,1,1,1];dinitial(A,B,C,D,x0)gridonylabel('振幅')xlabel('时间')title('离散零输入响应')axis([06-0.52.5])subplot(2,2,4)[z,p,k]=ss2zp(A,B,C,D,1)zplane(z,p)gridontitle('离散零极点图')xlabel('实部')ylabel('虚部')7.lsim()和dlsim(),任意输入函数的响应连续系统对任意输入函数的响应可利用MATLAB的函数lsim()求取,其调用格式为[y,x]=lsim(num,den,u,t)[y,x]=lsim(A,B,C,D,iu,u,t)其中,u为由给定输入序列构成的矩阵,它的每列对应一个输入,每行对应一个新的时间点,其行数与时间t的长度相等.其他用法同step()函数.8.gensig()特定输入时间响应函数[u,t]=gensig(type,Ta)type类型:sin、square(方波)、pulseTa-周期如生成一个周期为5s,持续时间为30s,采样时间为0.1s的方波。[u,t]=gensig('square',5,30,0.1)plot(t,u)axis([0,30,-0.5,1.5])9.tf()transferfunction[数]转移函数,[自]传递函数Sys=tf(NUM,DEN)用于创建一个传递函数的表达。例子clear[u,t]=gensig('squre',4,10,0.1);H=[tf([2,5,1],[1,2,3]);tf([1,-1],[1,1,5])];lsim(H,u,t)gridontitle('周期为4秒的方波输出响应')xlabel('时间')ylabel('振幅')gridoff10.sym()、syms定义符号变量sym(‘x’,’y’)%定义符号变量x,ysymsxy%定义符号变量x,y11.limit():求极限函数(P140)符号极限,(1)limit(F,v,a):计算符号对象F,当指定变量V到a时的极限。(2)limit(F,a):计算符号对象F,当默认的独立变量趋近于a的极限。(3)limit(F):计算符号对象F,当默认的独立变量趋近于0的极限。(4)limit(F,v,a,’right’)或limit(F,v,a,’left’):计算符号函数F的单侧极限:右极限v到a的极限,或左极限v到a的极限。12.diff():求微分函数(P141)(1)diff(S,’v’):对符号对象S中指定的符号变量v求其1阶导数。(2)diff(S):对符号对象S中默认的独立变量求其1阶导数。(3)diff(S,n):对符号对象S中默认的独立变量求其n阶导数。(4)diff(S,’v’,n):对符号对象S中指定的符号变量v求其n阶导数。13.int():求积分函数(P141)(1)R=int(S,v):对符号对象S中指定的符号变量v求不定积分,结果没有带任意常数C。(2)R=int(S):对符号对象S中默认的独立变量求不定积分。(3)R=int(S,v,a,b):对符号对象S中指定的符号变量v求从a到b的定积分。(4)R=int(S,a,b):对符号对象S中默认的独立变量求从a到b的定积分。14.符号inf无穷大MATLAB中无穷大用Inf表示,这个符号是MATLAB已经定义好的特殊变量。负无穷大用-inf表示,正无穷大用+inf或inf表示。15.rand()‹常用的产生通用特殊矩阵的函数–zeros:产生全0矩阵(零矩阵)–ones:产生全1矩阵(幺矩阵)–eye:产生单位矩阵–rand:产生0~1间均匀分布的随机矩阵–randn:产生均值为0,方差为1的标准正态分布随机矩阵‹以zeros函数为例–zeros(m):产生m×m零矩阵–zeros(m,n):产生m×n零矩阵–zeros(size(A)):产生一个与矩阵A同样大小的零矩阵Rand:生成均匀分布的伪随机数,分布在(0~1)之间,主要语法:rand(m,n)生成m行n列的均匀分布的伪随机数产生在[a,b]区间服从均匀分布的随机数方法a+(b-a)*rand(m,n)Randn:生成标准正态分布的伪随机数(均值为0,方差为1)»主要语法:和上面一样»产生均值为μ,方差为σ2的随机数方法例子clearnum=[2-6.83.6];den=[3-4.31.75];u=rand(100,1);dlsim(num,den,u);gridonclearnum=1.064;den=[2,-3.685,1.791];u1=[ones(1,50),-1*ones(1,50)];u=[u1,u1,u1];dlsim(num,den,u)gridontitle('离散系统仿真')xlabel('时间')ylabel('振幅')16.pzmap()MATLAB提供了函数pzmap()来绘制系统的零极点图,其用法如下调用格式为pzmap(p,z);P—零点向量z—极点向量•[p,z]=pzmap(a,b,c,d):返回状态空间描述系统的极点矢量和零点矢量,而不在屏幕上绘制出零极点图。(不绘图,只求p,z)•[p,z]=pzmap(num,den):返回传递函数描述系统的极点矢量和零点矢量,而不在屏幕上绘制出零极点图。(不绘图,只求p,z)•pzmap(a,b,c,d)或pzmap(num,den):不带输出参数项,则直接在s复平面上绘制出系统对应的零极点位置,极点用×表示,零点用o表示。(绘图,不求p,z)•pzmap(p,z):根据系统已知的零极点列向量或行向量直接在s复平面上绘制出对应的零极点位置,极点用×表示,零点用o表示。例子clearnum=[0.00010.02181.04369.3599];den=[0.00060.02680.063656.2711];[p,z]=pzmap(num,den)%求p,z值pzmap(num,den)%绘图,绘出图纸gridontitle('零极点图')xlabel('实轴')ylabel('虚轴')clearnum=[0.00010.02181.04369.3599];den=[0.00060.02680.063656.2711];sys=tf(num,den);pzmap(sys)[p,z]=pzmap(sys)title('零极点图')xlabel('实轴')ylabel('虚轴')图与上面相同17.rlocus()MATLAB提供了函数rlocus()来绘制系统的根轨迹图,其用法如下:•rlocus(a,b,c,d)或者rlocus(num,den):根据SISO开环系统的状态空间描述模型和传递函数模型,直接在屏幕上绘制出系统的根轨迹图。开环增益的值从零到无穷大变化。•rlocus(a,b,c,d,k)或rlocus(num,den,k):通过指定开环增益k的变化范围来绘制系统的根轨迹图。•r=rlocus(num,den,k)或者[r,k]=rlocus(num,den):不在屏幕上直接绘出系统的根轨迹图,而根据开环增益变化矢量k,返回闭环系统特征方程1+k*num(s)/den(s)=0的根r,它有length(k)行,length(den)-1列,每行对应某个k值时的所有闭环极点。或者同时返回k与r。•若给出传递函数描述系统的分子项num为负,则利用rlocus函数绘制的是系统的零度根轨迹。(正反馈系统或非最小相位系统)例子clearnum=[0.00010.02181.04369.3599];den=[0.00060.02680.063656.2711];sys=tf(num,den);rlocus(sys)title('根轨迹图')xlabel('实轴')ylabel('虚轴')rlocfind()函数MATLAB提供了函数rlocfind()来找出给定的一组根(闭环极点)对应的根轨迹增益。其用法如下:[k,p]=rlocfind(a,b,c,d)或者[k,p]=rlocfind(num,den)•它要求在屏幕上先已经绘制好有关的根轨迹图。然后,此命令将产生一个光标以用来选择希望的闭环极点。命令执行结果:k为对应选择点处根轨迹开环增益;p为此点处的系统闭环特征根。•不带输出参数项[k,p]时,同样可以执行,只是此时只将k的值返回到缺省变量ans中。例clearsi=1;s2=conv([1,0],conv([0.5,1],[4

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

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

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

×
保存成功