MATLAB复习知识点.docx
《MATLAB复习知识点.docx》由会员分享,可在线阅读,更多相关《MATLAB复习知识点.docx(16页珍藏版)》请在冰点文库上搜索。
MATLAB复习知识点
MATLAB复习知识点
MATLAB复习
1、实现符号函数
运算功能的函数m文件为:
functiony=sgn(x)
ifx<0
y1=-1;
elseifx==0
y1=0;
else
y1=1;
end
y=y1;
2、求满足1+2+3+…n<100的最大正整数n的MATLAB程序为:
sum=0;n=0;
whilesum<100
n=n+1;
sum=sum+n;
end
sum=sum-n;
n=n-1;
n,sum
3、m文件有两种形式,一种称为命令文件(ScriptFile),另一种称为函数文件(FunctionFile),两种文件的扩展名都是m。
4、反馈控制系统品质要求:
稳定性、准确性、快速性
5、按不同系统的特征方程式,可将自动控制系统分为线性系统和非线性系统。
6、MATLAB控制相关的工具箱
(1)控制系统工具箱
(2)系统辨识工具箱
(3)模型预测控制工具箱
(4)鲁棒控制工具箱
(5)神经网络工具箱
7、MATLAB系统的构成
(1)开发环境
(2)数学函数库(3)MATLAB语言(4)图形处理系统(5)应用程序接口
8、常用工具箱
(1)控制类工具箱
(2)应用数学类工具箱(3)信号处理类工具箱(4)其他常用工具箱
9、MATLAB语句形式:
>>变量=表达式
10、MATLAB常用命令
quit关闭MATLAB
exit关闭MATLAB
clc清除MATLAB命令窗口中的所有显示内容
clear清除工作空间中保存的所有变量
11、MATLAB基本数据类型:
双精度数组、字符串数组、元胞数组、结构数组
12、矩阵的创建
(1)直接输入法
(2)通过数据文件创建矩阵(3)通过m文件创建矩阵(4)通过函数创建矩阵(5)冒号法
13、冒号法
[1]冒号法构造向量
冒号表达式的一般格式为:
向量名=初值:
步长:
终值
[2]冒号法构造矩阵
一般格式为:
A(:
j):
表示矩阵A的第j列;
A(i,:
):
表示矩阵A的第i行。
A(i,j)表示取矩阵A的第i行第j列交叉位置的元素
14、矩阵的运算
/(矩阵的右除)或\(矩阵的左除)
A-1=inv(A)矩阵的逆
15、求下面方程组的根
>>A=[2,1,-3;3,-2,2;5,-3,-1];
>>B=[5;5;16];%列向量
>>X=A\B
16、矩阵的大小测度
行数:
m=size(A,1)
列数:
n=size(A,2)
测行数和列数:
d=size(A)
17、矩阵的元素操作
A(2,3):
找出元素
A(3,5)=-1:
赋值
18、符号变量和符号表达式
①用函数sym建立符号变量、符号表达式和符号矩阵。
调用格式为:
变量=sym(‘表达式’)
②用函数syms建立符号变量、符号表达式和符号矩阵。
调用格式为:
Symsvar1var2var3…
19、符号微积分
limit(f,x,a)求表达式f当x→a时的极限
diff(f)求表达式f对缺省变量的微分
diff(f,n)求表达式f对缺省变量求n阶微分
diff(f,v)求表达式f对变量v的微分
diff(f,v,n)求表达式f对变量v的n阶微分
int(f)求表达式f对缺省变量的积分
int(f,v)求表达式f对变量v的积分
int(f,v,a,b)求表达式f在区间(a,b)上对变量v的定积分
20、已知f(x)=ax2+bx+c,求f(x)的微分和积分。
解:
>>symsabcx
>>f=sym(‘a*x^2+b*x+c’)
f=
a*x^2+b*x+c
>>diff(f,a)
ans=
x^2
>>int(f)
ans=
1/3*a*x^3+1/2*b*x^2+c*x
>>int(f,x,0,2)
ans=
8/3*a+2*b+2*c
21、MATLAB绘图命令
例在[0,2]用红线画sinx,用绿圈画cosx.
x=linspace(0,2*pi,30);%%(30等分)
y=sin(x);
z=cos(x);
plot(x,y,'r',x,z,'go')
符号函数(显函数、隐函数和参数方程)画图
ezplot命令
(1)ezplot(‘f(x)’,[a,b])
表示在a(2)ezplot(‘f(x,y)’,[xmin,xmax,ymin,ymax])
表示在区间xmin(3)ezplot(‘x(t)’,’y(t)’,[tmin,tmax])
表示在区间tmin例在[-2,0.5],[0,2]上画隐函数
的图.
解:
输入命令:
ezplot('exp(x)+sin(x*y)',[-2,0.5,0,2])
例在[-1,2]上画
的图形.
解:
先建M文件myfun1.m:
functionY=myfun1(x)
Y=exp(2*x)+sin(3*x.^2)
再输入命令:
fplot(‘myfun1’,[-1,2])
处理图形
(1)GRIDON:
加格栅在当前图上GRIDOFF:
删除格栅
(2)hh=xlabel(string):
在当前图形的x轴上加图例string
hh=ylabel(string):
在当前图形的y轴上加图例string
hh=zlabel(string):
在当前图形的z轴上加图例string
hh=title(string):
在当前图形的顶端上加图例string
(3)holdon保持当前图形,以便继续画图到当前图上
holdoff释放当前图形窗口
22、Simulink仿真实例
例题1、使用Simulink创建系统,求解非线性微分方程
.其初始值为
绘制函数的波形.
例题2、力-质量系统,要拉动一个箱子(拉力f=1N),箱子质量为M(1kg),箱子与地面存在摩擦力[(b=0.4N(/m/s)],其大小与车子的速度成正比。
其运动方程式为:
拉力作用时间为2s,建构的模型为
例题3、力-弹簧-阻尼系统,假设箱子与地面无摩擦存在,箱子质量为M(1kg),箱子与墙壁间有线性弹簧(k=1N/m)与阻尼器(b=0.3N/ms-1)。
阻尼器主要用来吸收系统的能量,吸收系统的能量转变成热能而消耗掉。
现将箱子拉离静止状态2cm后放开,试求箱子的运动轨迹。
运动方程式为:
23、控制系统数学模型
1、传递函数(TransferFunction:
TF)模型
num=[b0,b1,…,bm-1,bm],den=[a0,a1,…,an-1,an]
在MATLAB中,控制系统的分子多项式系数和分母多项式系数分别用向量num和den表示,即
2、零极点增益(Zero-Pole-Gain:
ZPK)模型
在MATLAB中,控制系统的零点和极点分别用向量Z和P表示,即
Z=[z1,z2,…,zm],P=[p1,p2,…,pn]
3、传递函数模型
sys=tf(num,den)生成传递函数模型sys
直接生成传递函数模型。
在MATLAB命令窗口中输入:
>>sys=tf([132],[1573])
4、零极点增益模型
sys=zpk(z,p,k)%建立连续系统的零极点增益模型sys。
z,p,k分别对应系统的零点向量,极点向量和增益
sys2=tf(sys)%将零极点增益模型转换为传递函数模型
【例2.1】已知控制系统的传递函数为,用MATLAB建立其数学模型
【解】
(1)生成连续传递函数模型。
在MATLAB命令窗口中输入:
>>num=[132];
>>den=[1573];
>>sys=tf(num,den)
【例2.3】系统的零极点增益模型为,用MATLAB建立其传递函数模型。
【解】在MATLAB命令窗口中输入:
>>z=[-0.1,-0.2];p=[-0.3,-0.3];k=1;
>>sys=zpk(z,p,k)%建立系统的零极点增益模型
5、模型连接
(1)串联连接
格式:
sys=series(sys1,sys2)
(2)并联连接
格式:
sys=parallel(sys1,sys2)
(3)反馈连接
格式:
sys=feedback(sys1,sys2,sign)
24、时域分析
时域响应性能指标求取
1、峰值时间
[Y,k]=max(y)%求出y的峰值及相应的时间
timetopeak=t(k)%获得峰值时间
2、超调量
C=dcgain(G)%求取系统的终值
[Y,k]=max(y)%求出y的峰值及相应的时间
percentovershoot=100*(Y-C)/C%计算超调量
3、上升时间
C=dcgain(G)
n=1
whiley(n)n=n+1
end
m=1;
risetime=t(n)
4、调节时间
C=dcgain(G)
i=length(t)
while(y(i)>0.98*C)&(y(i)<1.02*C)
i=i-1
end
Settingtime=t(i)
※※例1已知二阶系统传递函数为
,编程求取系统的性能指标。
G=zpk([],[-1+3*i,-1-3*i],3);%计算最大峰值时间和它对应的超调量
C=dcgain(G)
[y,t]=step(G);
plot(t,y)
grid
[Y,k]=max(y);
timeopeak=t(k)%取得最大峰值时间
percentovershoot=100*(Y-C)/C%计算超调量
n=1%计算上升时间
whiley(n)n=n+1
end
risetime=t(n)
i=length(t);%计算稳态响应时间
while(y(i)>0.98*C)&(y(i)<1.02*C)
i=i-1;
end
settingtime=t(i)
例2已知单位负反馈系统,其开环传递函数为
,其中ωn=1,试绘制ζ分别为0,0.2,0.4,0.6,0.9,1.2,1.5时其单位负反馈系统的单位阶跃响应曲线。
wn=1
sigma=[0,0.2,0.4,0.6,0.9,1.2,1.5]
figure
(1);holdon
num=wn*wn
t=linspace(0,20,200)'%将t在0到20之间均等分成200份
fori=sigma
den=conv([1,0],[1,2*wn*i]);
s1=tf(num,den)
sys=feedback(s1,1)
step(sys,t)
grid
end
title('典型二阶系统取不同阻尼比时的单位阶跃响应')
holdon
gtext('sigma=0');gtext('sigma=0.2');gtext('sigma=0.4');gtext('sigma=.6');
gtext('sigma=0.9');gtext('sigma=1.2');gtext('sigma=1.5');
例3已知单位负反馈的二阶系统,其开环传函为
其中T=1,试绘制k分别为0.1,0.2,0.5,0.8,1.0,2.4时,其单位负反馈系统的单位阶跃响应曲线。
T=1
k=[0.1,0.2,0.5,0.8,1.0,2.4]
t=linspace(0,20,200)'
num=1;den=conv([1,0],[T,1])
forj=1:
6
s1=tf(num*k(j),den)
sys=feedback(s1,1)
y(:
j)=step(sys,t);
end
plot(t,y(:
1:
6));grid
title(‘典型二阶系统取不同开环增益时的单位阶跃响应')
gtext('k=0.1');gtext('k=0.2');gtext('k=0.5');
gtext('k=0.8');gtext('k=1.0');gtext('k=2.4');
例4已知单位负反馈的二阶系统,其中T=1,K=1,试绘制分别为0,0.05,0.2,0.5,1.0,2.4时,其单位负反馈系统的单位阶跃响应曲线。
T=1
k=1
tou=[0,0.05,0.2,0.5,1.0,2.4]
t=linspace(0,20,200)'
num=1
forj=1:
6
den=conv([1,0],[T,1+tou(j)])
s1=tf(num*k,den)
sys=feedback(s1,1)
y(:
j)=step(sys,t);
end
plot(t,y(:
1:
6));grid
title('典型二阶系统采用输出微分反馈时的单位阶跃响应')
gtext('tou=0');gtext('tou=0.05');gtext('tou=0.2');
gtext('tou=0.5');gtext('tou=1.0');gtext('tou=2.4');
25、生成特定的激励信号的函数gensig()
格式:
[u,t]=gensig(type,tau)
功能:
按指定的类型type和周期tau生成特定类型的激励信号u。
其中变元type可取字符为:
‘sin’(正弦)、‘square’(方波)、‘pulse’(脉冲)。
26、单位冲激响应函数impulse()
格式:
impulse(sys)
例:
系统传递函数为:
求脉冲响应。
MATLAB程序如下:
sys=tf(4,[114]);%生成传递函数模型
impulse(sys);%计算并绘制系统的单位冲激响应
title('脉冲响应');
27、任意输入的响应函数lsim()
格式:
lsim(sys,u,T)
功能:
计算和绘制LTI模型sys在任意输入u、持续时间T的作用下的输出y,不返回数据,只返回图形。
※※例:
求系统:
的方波响应,其中方波周期为6秒,持续时间12秒,采样周期为0.1秒。
MATLAB程序为:
[u,t]=gensig('square',6,12,0.1);%生成方波信号
plot(t,u,'--');holdon;%绘制激励信号
sys=tf([1,1],[1,2,5]);%生成传递函数模型
lsim(sys,u,t);%系统对方波激励信号的响应
27、阶跃响应函数step()格式:
step(sys)
28、Bode图绘制与Nyquist图绘制
Bode图绘制
bode(sys)
Nyqusit图绘制
nyquist(sys)
例:
试绘制开环系统H(s)的Nyquist曲线,判断闭环系统的稳定性,并求出闭环系统的单位冲激响应。
其中
MATLAB程序为:
k=50;z=[];p=[-5,2];
sys=zpk(z,p,k);
figure
(1);nyquist(sys);title('Nyquist曲线图');
figure
(2);sb=feedback(sys,1);
impulse(sb);title('单位冲激响应');
29、MATLAB常用操作界面包括命令窗口、工作空间窗口(浏览器)、命令历史窗口、当前目录窗口、内存数组编辑器、M文件编辑/调试器、帮助导航/浏览器、图形窗口等。
30、MATLAB中clf用于清除图形窗、clc用于清除指令窗中显示内容、clear用于清除MATLAB工作空间中保存的变量。
31、为了使两个plot的图形在同一个坐标显示,可以用(holdon)命令进行图形保持,一个图形窗口上绘制多个图形可以用(subplot())函数进行分割窗口。
可以使用___gridon____命令为图形添加网格。
32、求可逆矩阵A的逆矩阵的指令是__inv(A)__.
33、M文件包括__M脚本__文件和__M函数__文件.
34、在一个元胞数组A中寻访第2行第3列元胞元素用A(2,3);寻访数组第2行第3列元胞中的内容用A{2,3}。
35、“左除”与“右除”有什么区别?
在通常情况下,左除x=a\b是a*x=b的解,右除x=b/a是x*a=b的解,一般情况下,a\b
b/a。