matlaB中的一些函数

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

函数
1.step阶跃响应指令(连续函数)dstep 阶跃响应指令(离散函数)
clear
clc
num=[2 -3.4 1.5];
den=[1 -1.6 0.8];
dstep(num,den)
grid on
title('离散系统阶跃响应')
xlabel('时间')
clear
clc
num=[2 -3.4 1.5];
den=[1 -1.6 0.8]
step(num,den)
grid on
title('离散系统阶跃响应') xlabel('时间')
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([xmin xmax ymin ymax])
axis([xmin xmax ymin ymax zmin zmax cmin cmax]) 坐标轴设置
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、 在已知零极点时,例如某滤波器的零
点为-1/2,一对共轭极点为
和 时,只要输入命令 zer = -0.5;
pol = 0.9*exp(j*2*pi*[-0.3 0.3]'); zplane(zer,pol) 即可画出零极点。

另一种情况:已知系统的系统函数系数向量b 和 a ,则可通过调用
)
3.0(29.0πj e )
3.0(29.0πj e -
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]=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])
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为由给定输入序列构成的矩阵,它的每列对应一个输入,每行对应一个新的时间点,其行数与时间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 ) 用于创建一个传递函数的表达。

例子
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():求极限函数(P140)
符号极限,
(1)l imit(F,v,a): 计算符号对象F,当指定变量V到a时的极限。

(2)l imit(F,a) : 计算符号对象F,当默认的独立变量趋近于a 的极限。

(3)l imit(F) : 计算符号对象F,当默认的独立变量趋近于0 的极限。

(4)l imit(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的随机数方法
例子
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('振幅')
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表示。

例子
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.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函数绘制的是系统的零度根轨迹。

(正反馈系统或非最小相位系统)
例子
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('虚轴')。

相关文档
最新文档