matlab中的一些函数
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)
clear clc num=[2 -3.4 1.5]; den=[1 -1.6 0.8] step(num,den) grid on
title('连续系统阶跃响应')
xlabel('时间')
ylabel('振幅')
2. c2dm()函数,连续系统的离散化 在 MATLAB 软件中对连续系统的离散
化是应用 c2dm()函数实现的,c2dm()函数的 一般格式为
指定开环增益 k 的变化范围来绘制系统的根轨迹图。
• r=rlocus(num,den,k)
或
者
[r,k]=rlocus(num,den) :不在屏幕上直接绘出系统的根
轨迹图,而根据开环增益变化矢量 k ,返回闭环系统特征
方程 1+k*num(s)/den(s)=0 的根 r,它有 length(k)行,
常用的产生通用特殊矩阵的函数
– 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 同样大小的零矩阵
17. rlocus()
MATLAB 提供了函数 rlocus()来绘制系统的根轨迹 图,其用法如下:
• rlocus(a,b,c,d)或者 rlocus(num,den):根据 SISO
开环系统的状态空间描述模型和传递函数模型,直接在屏
幕上绘制出系统的根轨迹图。开环增益的值从零到无穷大
变化。
• rlocus(a,b,c,d,k)或 rlocus(num,den,k): 通过
矢量和零点矢量,而不在屏幕上绘制出零极点图。(不绘图,只
求 p,z)
• pzmap(a,b,c,d)或 pzmap(num,den):不带输出参数项, 则直接在 s 复平面上绘制出系统对应的零极点位置,极点用×
表示,零点用 o 表示。(绘图,不求 p,z)
• pzmap(p,z):根据系统已知的零极点列向量或行向量直 接在 s 复平面上绘制出对应的零极点位置,极点用×表示,零
a 到 b 的定积分。 (4)R=int(S,a,b): 对符号对象 S 中默认的独立变量求从 a
到 b 的定积分。
14.符号 inf 无穷大
MATLAB 中无穷大用 Inf 表示,这个符号是 MATLAB 已经定义 好的特殊变量。负无穷大用-inf 表示,正无穷大用+inf 或 inf 表示。
15.rand()
表达。
例子 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
[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(方波)、pulse Ta-周期
6. zplane()
zplane 函数用于画出线性系统在 Z 平面上的零极点。有两种使用方法:
在已知零极点时,例如某滤波器的零点为-1/2,一对共轭极 点为0.9e j2 (0.3) 和 0.9e j2 (0.3) 时,只要输入命令
zer = -0.5; pol = 0.9*exp(j*2*pi*[-0.3 0.3]'); zplane(zer,pol) 即可画出零极点。 另一种情况:已知系统的系统函数系数向量 b 和 a ,则可 通过调用 zplane(b,a) 绘出零极点。
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 求从
的极限。 (3)limit(F) : 计算符号对象 F,当默认的独立变量趋近于 0
的极限。
(4)limit(F,v,a,’right’)或 limit(F,v,a,’left’):计算符号 函数 F 的单侧极限:右极限 v 到 a 的极限,或左极限 v 到 a 的 极限。
12.diff(): 求微分函数(P141)
length(den)-1 列,每行对应某个 k 值时的所有闭环极点。
或者同时返回 k 与 r。
• 若给出传递函数描述系统的分子项 num 为负,则利
如 生成一个周期为 5s,持续时间为 30s,采样时间为 0.1s 的方波。
[u,t]=gensig('square',5,30,0.1) plot(t,u) axis([0,30,-0.5,1.5])
9.tf()
transfer function [数] 转移函数,[自] 传递函数
Sys= tf (NUM, DEN ) 用于创建一个传递函数 的
这种情形下,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]=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('离散零输入响应') axis([0 6 -0.5 2.5])
例子 clear num=[2 -6.8 3.6];den=[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('振幅')
点用 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('零极点图')
(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 阶导数。
函数
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('振幅')
4. axis 坐标轴范围
axis 一般用来设置 axes 的样式,包括坐标轴范围,可读比例等 axis([xmin xmax ymin ymax]) axis([xmin xmax ymin ymax zmin zmax cmin cmax]) 坐标轴设置
5. 函数 ss2zp()(与 zplane()连用) MATLAB 还提供了 一个 类 似的 函数