MATLAB的使用方法
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
/irp/uploadfile/netclass/CONTROL/application/ Matlab%E7%9A%84%E4%BD%BF%E7%94%A8.html
在本教程的制作中,主要是应用MATLAB的仿真功能对各例题的结果进行仿真,观察所设计的控制系统的
输出、误差等。
MATLAB本身自带了很多的模型,这次所应用到的有以下一些:
以上模型的参数都可以改变。比如线性传递函数的描述方法是:将线性传递函数的分子和分母分别按s的降幂
排列,然后将各项的系速以矩阵的形式描述。例如,线性传递函数 10/s(s+1)的描述方法为:分子
(Numerator)----[10]、分母(Denominator)----[1 1 0]。
以下以例一中在单位加速度输入时的仿真为例说明MATLAB的使用方法。
步骤如下:
1.进入 MATLAB命令窗口(Command Window)后,单击工具栏中的New
Simulink Mode l图标,进入仿
真(Simulink)窗口。
2.从同时打开的Library窗口中选取组成框图所需的部件:零阶保持器、离散传递函数、线性传递函数、
示波器、比较器。由于MATLAB没有提供加速度输入的模型,因此,要由速度输入和积分器组合而成。根据题
目给出的条件和计算得出的控制器模型调整各环节的参数,设置如下:
Ramp----Slope:1 Start time:0 initial output:0;
Sum----List of signs:+-;
Discrete Transfer Fcn----
Numerator: [0.8154 -1.11538566 0.57178566 -0.09999522] Denominator: [1 -1.282 -0.436 0.718]
Sample time:1;
Zero-Order Hold----
Sample time:1;
Transfer Fcn----
Numerator:[10]
Denominator:[1 10]。合成后的框图如下
如果觉得各模型下的英文说明难以说明问题的话,还可以把它们改成中文,或隐藏,也可以在任一地方添加
注释。
3.图上共设置了三个示波器,分别观察系统的输入、输出合误差。要观察这些信号,就要进行仿真,选
择菜单项Simulation->Start以开始仿真,听到扬声器发出“嘀”的一声,表示仿真结束,这时可以双击示
波器来观察仿真结果。如果所现示的信号图不理想,还可以通过调整图的属性来达到很好的效果。单击属性
按钮,便可设置y-轴的最大值(y-max)、最小值(y-min)、时间跨度
(time-range)等参数,还可以将数据送
给工作区(Save data to workspace),为以后画多条曲线的合成图作准备。调整参数后的系统误差如下图所
示(其他信号略)
4.单独的看各个信号还不能很好地反映输入与输出之间的关系,还需将三个信号合在一幅图中进行观
察,具体做法是:在各个示波器的属性中设置好输出数据到工作区的变量名(输出为output、输入为input、
误差为error),然后回到命令窗口(Command Window),键入以下命令便可看到三个信号合在一起的图
plot(output(:,1),output(:,2),error(:,1),error(:,2),input(:,1),input(: ,2))
其中,plot命令中的各参数
依次表示各条曲线的x轴
和y轴,output(:,1)表示
output变量第一列(1)中的
所有元素(:),如果想输出
的图带有格子,可键入
Grid on命令。由于输入与
输出的差别集中在前两拍,
因此还需调整仿真的停止
时间以达到更好的效果,
具体做法是:进入仿真窗
口,选择菜单Simulation->
Parameters,将参数Stop
time设置为5.0,再次进行
仿真、画图,最后得到的三
个信号合一的图如左。.
要想将所画的以图片的形式保存,有两种方法,一是用抓图软件将其抓下来,另一种方法是用以下一组命令
将其保存为 bmp文件ieo.bmp
[x,map]=capture
imwrite(x,map,'ieo.bmp')
至此,便完成了整个仿真过程。
-1、基本运算与函数在MATLAB下进行基本数学运算,只需将运算式直接打入提示号(>>)之後,并按入Enter键即可。例如:>>(5*2+1.3-0.8)*10/25 ans = 4.2000 MATLAB会将运算结果直接存入一变数ans,代表MATLAB运算後的答案(Answer),并显示其数值於萤幕上。(为简便起见,在下述各例中,我们不再印出MATLAB的提示号。)
=============================================== 小提
示: ">>"是MATLAB的提示符号(Prompt),但在PC中文视窗系统下,由於编码方式不同,此提示符号常会消失不见,但这并不会影响到MATLAB的运算结果。
=============================================== 我们也可
将上述运算式的结果设定给另一个变数x:x = (5*2+1.3-0.8)*10^2/25 x = 42 此时MATLAB会直接显示x的值。由上例可知,MATLAB认识所有一般常用到的加(+)、减(-)、乘(*)、除(/)的数学运算符号,以及幂次运算(^)。小提示:MATLAB将所有变数均存成double的形式,所以不需经过变数宣告(Variable declaration)。MATLAB同时也会自动进行记忆体的使用和回收,而不必像C语言,必须由使用者一一指定。这些功能使的MATLAB易学易用,使用者可专心致力於撰写程式,而不必被软体枝节问题所干扰。若不想让MATLAB每次都显示运算结果,只需在运算式最後加上分号(;)即可,如下例:y = sin(10)*exp(-0.3*4^2); 若要显示变数y的值,直接键入y即可:>>y y = -0.0045 在上例中,sin是正弦函数,exp是指数函数,这些都是MATLAB常用到的数学函数。下表即为MATLAB常用的基本数学函数及三角函数:
=============================================== 小整理:MATLAB常用的基本数学函数abs(x):纯量的绝对值或向量的长度angle(z):复数z的相角(Phase angle) sqrt(x):开平方 real(z):复数z的实部imag(z):复数z的虚部conj(z):复数z的共轭复数round(x):四舍五入至最近整数fix(x):无论正负,舍去小数至最近整数floor(x):地板函数,即舍去正小数至最近整数ceil(x):天花板函数,即加入正小数至最近整数rat(x):将实数x化为分数表示rats(x):将实数x化为多项分数展开sign(x):符号函数(Signum function)。当x<0时,sign(x)=-1;当x=0时,sign(x)=0; 当x>0时,sign(x)=1。rem(x,y):求x除以y的馀数gcd(x,y):整数x和y的最大公因数lcm(x,y):整数x和y的最小公倍数exp(x):自然指数pow2(x):2的指数log(x):以e为底的对数,即自然对数或log2(x):以2为底的对数log10(x):以10为底的对数
=============================================== 小整理: