1、 函数 1.step 阶跃响应指令(连续函数) dstep 阶跃响应指令(离散函数) clear clc num=[2 -3.4 1.5]; den=[1 -1.6 0.8]; dstep(num,den) grid on title('离散系统阶跃响应') xlabel('时间') ylabel('振幅') clear clc num=[2 -3.4 1.5]; den=[1 -1.6 0.8] step(num,den) grid on title('离散系统阶跃响应') xlabel('时间') ylabel('振幅'
2、) 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) [
3、y,x,t]=dinitial(A,B,C,D,x0,n) 4. axis axis一般用来设置axes的样式,包括坐标轴范围,可读比例等 axis([xmin xmax ymin ymax]) axis([xmin xmax ymin ymax zmin zmax cmin cmax]) 坐标轴设置 5. 函数ss2zp()(与zplane()连用) MATLAB还提供了一个类似的函数ss2zp()。该函数的功能是直接根据系统的状态方程描述求取系统的零点、极点和增益,不必先化成传递函数描述形式。其基本调用格式与tf2zp()函数类似,只是多了一个输入
4、量选择的参数: [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、 在已知零极点时,例如某滤波器的零点为-1/2,一对共轭极点为 和 时,只要输入命令 zer = -0.5; pol =
5、0.9*exp(j*2*pi*[-0.3 0.3]'); zplane(zer,pol) 即可画出零极点。 另一种情况:已知系统的系统函数系数向量b 和 a ,则可通过调用 zplane(b,a) 绘出零极点。 这种情形下,zplane 函数先求得系统函数的零点和极点,然后绘出零极点图。 例子 clear A1=[-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
6、]=c2dm(A1,B1,C1,D1,t,'m'); subplot(2,2,1) dstep(A,B,C,D) grid on title('离散阶跃响应') xlabel('时间') ylabel('振幅') subplot(2,2,2) dimpulse(A,B,C,D) grid on title('离散冲激响应') ylabel('振幅') xlabel('时间') subplot(2,2,3) x0=[1,1,1,1]; dinitial(A,B,C,D,x0) grid on ylabel('振幅') xlabel('时间') title('
7、离散零输入响应') axis([0 6 -0.5 2.5]) subplot(2,2,4) [z,p,k]=ss2zp(A,B,C,D,1) zplane(z,p) grid on title('离散零极点图') 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为由给定输入序列构成的矩阵
8、它的每列对应一个输入,每行对应一个新的时间点,其行数与时间t的长度相等.其他用法同step()函数. 8. gensig() 特定输入时间响应函数 [u,t]=gensig(type,Ta) type类型:sin、square(方波)、pulse Ta-周期 如 生成一个周期为5s,持续时间为30s,采样时间为 0.1s的方波。 [u,t]=gensig('square',5,30,0.1) plot(t,u) axis([0,30,-0.5,1.5]) 9.tf() Sys= tf (NUM, DEN ) 用于创建一个传递函数的表达。
9、 例子 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) grid on title('周期为4秒的方波输出响应') xlabel('时间') ylabel('振幅') grid off 10.sym()、syms 定义符号变量 sym(‘x’,’y’) %定义符号变量x,y syms x y %定义符号变量x,y 11.limit
10、):求极限函数(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’): 对符号
11、对象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求从
12、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的标准正态分布随机矩阵 以zer
13、os函数为例 – 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的随机数方法 例子 clear num=[2 -6.8 3.6];den
14、[3 -4.3 1.75]; u=rand(100,1); dlsim(num,den,u); grid on clear num=1.064; den=[2,-3.685,1.791]; u1=[ones(1,50),-1*ones(1,50)]; u=[u1,u1,u1]; dlsim(num,den,u) grid on title('离散系统仿真') xlabel('时间') ylabel('振幅') 16. pzmap() MATLAB提供了函数pzmap()来绘制系统的零极点图,其用法如下 调用格式为 pzma
15、p(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复平面上绘制出对应的
16、零极点位置,极点用×表示,零点用o表示。 例子 clear num=[0.0001 0.0218 1.0436 9.3599]; den=[0.0006 0.0268 0.06365 6.2711]; [p,z]=pzmap(num,den) %求p,z值 pzmap(num,den) %绘图,绘出图纸 grid on title('零极点图') xlabel('实轴') ylabel('虚轴') clear num=[0.0001 0.0218 1.0436 9.3599]; den=[0.0006 0.0268 0.06365 6.271
17、1]; 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): 通过指定开
18、环增益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函数绘制的是系统的零度根轨迹。(正反馈系统或非最小相位系统) 例子 clear num=[0.0001 0.0218 1.0436 9.3599]; den=[0.0006 0.0268 0.06365 6.2711]; sys=tf(num,den); rlocus(sys) title('根轨迹图') xlabel('实轴') ylabel('虚轴')






