MATLAB及在控制系统课程中的应用_第1页
MATLAB及在控制系统课程中的应用_第2页
MATLAB及在控制系统课程中的应用_第3页
MATLAB及在控制系统课程中的应用_第4页
MATLAB及在控制系统课程中的应用_第5页
已阅读5页,还剩417页未读 继续免费阅读

付费下载

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、MATLAB及在控制系统课程中的应用主讲:刘凯峰 联系电话子邮箱:kfliu2022/8/121参考书目1、Matlab及在电子信息课程中的应用(第二版) 陈怀琛 电子工业出版社 2004年1月2、控制系统仿真与计算机辅助设计 薛定宇(东北大学) 机械工业出版社 2005年1月3、控制系统数字仿真与CAD (第二版) 张晓华(哈尔滨工业大学)机械工业出版社 2006年5月4、控制系统的数字仿真与计算机辅助设计 钱积新等 化学工业出版社 2003年5月5、基于MATLAB的系统分析与设计控制系统 楼顺天等 西安电子科技大学出版社6、MATLAB6.X 教程 张志涌 徐彦

2、琴2022/8/122第一篇 语言篇第1章 MATLAB 语言概述第2章 基本语法第3章 MATLAB 的开发环境和工具第4章 MATLAB 的其他函数库第5章 MATLAB的SIMULINK仿真第六章 计算机仿真的基本概念2022/8/123第二篇 应用篇第6章 计算机仿真的基本概念第7章 MATLAB在自动控制原理中应用 2022/8/124第1章 MATLAB语言概述1.1 MATLAB语言的发展1.2 MATLAB语言的特点1.3 MATLAB的工作环境 1.3.1 命令窗 1.3.2 图形窗 1.3.3 文本编辑窗1.4 演示程序1.5 网络资源2022/8/1251.1 MATLA

3、B语言的发展1.1.1 MATLAB 概述 MATLAB是集数值计算、符号运算及图形处理等强大功能于一体的科学计算语言,是一种交互式的以矩阵为基础的系统计算平台,它用于科学和工程的计算与可视化。它的优点在于快速开发计算方法,而不在于计算速度。 MATLAB已成为一门高校必修的课程,也是最为普遍的计算工具之一。2022/8/1261.1 MATLAB语言的发展(续)1.1.2 Matlab的发展 MATLAB名字由MATrix和 LABoratory 两词的前三个字母组合而成。那是20世纪七十年代,时任美国新墨西哥大学计算机科学系主任的Cleve Moler出于减轻学生编程负担的动机,为学生设计

4、了一组调用LINPACK和EISPACK矩阵软件工具包库程序的的“通俗易用”的接口,此即用FORTRAN编写的萌芽状态的MATLAB。1984年由Little、Moler、Steve Bangert合作成立MathWorks公司,并把MATLAB正式推向市场。从这时起,MATLAB的内核采用C语言编写,而且除原有的数值计算能力外,还新增了数据图视功能。2022/8/1271997年仲春,MATLAB5.0版问世,紧接着是5.1、5.2,以及和1999年春的5.3版。现今的MATLAB拥有更丰富的数据类型和结构、更友善的面向对象、更加快速精良的图形可视、更广博的数学和数据分析资源、更多的应用开发

5、工具。2000年末又推出6.0版本。无论在界面的设计上还是在内容上较以前版本都有很大的进展。2022/8/1281.1 MATLAB语言的发展(续)1.1.3 Matlab的版本演化Matlab 1.0Pc matlab-matlab 386Matlab3.5+simulinkMatlab 4.0:simlink内嵌(1992)Matlab 5.0 :全面的面向对象Matlab 5.15.3 (1999)Matlab 6.0 (2000)Matlab 6.5:购并了MATRIXxMatlab 7.0: (2004) 2009a(7.8)2022/8/1291.2 MATLAB语言的特点友好的工

6、作平台和编程环境简单易用的程序语言强大的科学计算及数据处理能力出色的图形处理功能应用广泛的模块集和工具箱实用的程序接口和发布平台模块化的设计和系统级的仿真2022/8/12101.3 MATLAB的工作环境1.3.1 命令窗(Command Window) 单行命令执行方式 执行结果直接显示1.3.2 图形窗(Figure Window) 用图形方式表示计算结果1.3.3 文本编辑窗(File Editor) 多行命令组成语言组,可以文件方式存盘下面就具体看一下MATLAB 的工作环境演示。2022/8/12111.4 演示程序在MATLAB的命令窗中键入 demo或demos2022/8/1

7、212%pend.mplot(-0.2,0.2,0;0,color,y,linestyle,-,linewidth,10);g=0.98;l=1;theta0=pi/6;x0=l*sin(theta0);y0=-l*cos(theta0);axis(-0.75,0.75,-1.25,0);axis(off);head=line(x0,y0,color,r,linestyle,.,erasemode,xor,markersize,40);body=line(0;x0,0,y0,color,b,linestyle,-,erasemode,xor);t=0;dt=0.01;while t0 fix=

8、floor x0 fix=ceil 函数名含义abs绝对值或者复数模sqrt平方根real实部imag虚部conj复数共轭round4舍5入到整数fix舍入到最接近0的整数floor舍入到最接近-的整数ceil舍入到最接近的整数2022/8/12512.3.3 元素群的函数函数名含义sign符号函数rem留数sin正弦cos余弦tan正切asin反正弦acos反余弦atan反正切atan2第四象限反正切函数名含义sinh双曲正弦cosh双曲余弦tanh双曲正切exp自然指数log自然对数log10以10为底的对数bessel贝赛尔函数gamma伽吗函数rat有理逼近2022/8/12522.4

9、 逻辑判断及流程控制2.4.1 关系操作符MATLAB常用的关系操作符有:(小于)、(大于)、=(大于或等于)、 = =(等于)、 =(不等于)。MATLAB的关系操作符可以用来比较两个大小相同的数组,或者比较一个数组和一个标量。在与标量比较时,结果和数组大小一样。a=1:9;b=a4b = 0 0 0 0 1 1 1 1 1c=a(a4)c = 5 6 7 8 92022/8/12532.4.1 关系操作符矩阵查找和排序子矩阵的查找使用find命令完成,它返回关系表达式为真的下标。例如:a=10:20;find(a15)ans = 7 8 9 10 11矩阵的排序使用sort函数,它将矩阵按

10、照升序排列。2022/8/12542.4.2 逻辑运算逻辑操作符定义了一种与或非的关系表达式。MATLAB的逻辑操作符有&(与)、|(或)、(非)、xor(异或)。例如:c=(a4)c =1 1 1 1 0 0 0 0 0c=(a4)&(a7)c =0 0 0 0 1 1 0 0 0C=xor(A,B)2022/8/12552.4.3 其他关系与逻辑函数xor(x,y) 异或运算。x或y非零(真)返回1,x和y都是零(假)或都是非零(真)返回0。any(x) 如果在一个向量x中,有元素非零,返回1;矩阵x中的每一列有非零元素,返回1。all(x) 如果在一个向量x中,所有元素非零,返回1;矩阵

11、x中的每一列所有元素非零,返回1。2022/8/1256%逻辑函数的运用示例。randn(state,1),R=randn(3,6) %创建正态随机阵 L=abs(R)1.5 %不等式条件运算,结果给出逻辑数组 R(L)=0%逻辑1对应的元素赋0值。 s=(find(R=0)%利用find获得符合关系等式条件的元素单下标 R(s)=111%利用单下标定位赋值 ii,jj=find(R=111);%利用find获得符合关系等式条件的元素双下标disp(ii),disp(jj)2022/8/1257【例】关系运算运用之一:求近似极限,修补图形缺口。t=-2*pi:pi/10:2*pi;y=sin(

12、t)./t;subplot(1,2,1),plot(t,y),axis(-7,7,-0.5,1.2),xlabel(t),ylabel(y),title(残缺图形)tt=t+(t=0)*eps;yy=sin(tt)./tt;subplot(1,2,2),plot(tt,yy),axis(-7,7,-0.5,1.2)xlabel(t),ylabel(yy),title(正确图形) Warning: Divide by zero. 2022/8/12582022/8/1259【例】逻辑操作应用之一:逐段解析函数的计算和表现。本例演示削顶整流正弦半波的计算和图形绘制。t=linspace(0,3*p

13、i,500);y=sin(t); z1=(t2*pi).*y;w=(tpi/3&t7*pi/3&t8*pi/3);w_n=w;z2=w*sin(pi/3)+w_n.*z1;subplot(1,3,1),plot(t,y,:r),ylabel(y)subplot(1,3,2),plot(t,z1,:r),axis(0 10 -1 1)subplot(1,3,3),plot(t,z2,-b),axis(0 10 -1 1) 2022/8/12602022/8/1261【例】写出生成下图所示波形的MATLAB脚本文件M文件。图中虚线为正弦波,要求它的负半波被置零,且在 处被削顶。 2022/8/12

14、62t=linspace(0,3*pi,500);y=sin(t); z1=(t2*pi).*y;w=(tpi/3&t7*pi/3&t=10 y=x2+3;elseif x=0 y=x3+4*x;else y=x5+x;end yx=input(x=);if x=10 y=x2+3;else if x=0 y=x3+4*x; else y=x5+x; endendy2022/8/12672.4.4 流程控制语句 for循环(一般用于循环次数已知的情况)for循环允许一组命令以固定的次数重复,它的一般形式是for x=array commandendfor 和end之间的命令串按数组array的

15、每一列执行一次,直到n次后终止。如:for j=1:2:10 y=j+j.2; end2022/8/12682.4.4 流程控制语句for循环内部接受任何有效的MATLAB数组;for循环可以嵌套;只要有矩阵形式可以解决的问题,不要使用for循环。使用for循环的算法执行很慢,一个好的MATLAB算法不应当出现循环语句。Tic/toc循环可以使用break跳出,但只跳出所在的循环,不跳出整个嵌套结构。循环变量可以是一个数组,如: X= 11,2,3;-44 ,54,60 for A=X Y=A(1)+A(2) end; Y2022/8/12692.4.4 流程控制语句while循环与for循环

16、以固定的次数求一组指令相反,while循环以不定的次数求一组语句的值。While循环的一般形式为:while expression commondsend只要表达式expression里的所有元素为真,就执行命令串commands。通常表达式求值给一个标量值,矩阵也同样有效。元素都不为零可执行。2022/8/1270求y=0;for x=1:100 y=y+x;endyN=input(N=);y=0;for i=1:N for j=1:N y=y+1/(i+j); endendyN=input(N=);y=0;i=1;while i=N j=1; while j=N y=y+1/(i+j);

17、j=j+1; end i=i+1;endy2022/8/1271【例】Fibonacci数组的元素满足Fibonacci 规则: , ;且 。现要求该数组中第一个大于10000的元素a(1)=1; a(2)=1;i=2;while a(i)=10000 a(i) break; end;endi ans = 10946i = 21 2022/8/12732.4.4 流程控制语句Switch 语句 是一种均衡实现的多分支语句。Switch expressionCase 值1 commands1Case 值2 commands2 Otherwise commandsNEnd如果一个条件满足,在执行完

18、语句体后就到END2022/8/1274学生的成绩管理,用来演示switch结构的应用。 clear;for i=1:10 ai=89+i;bi=79+i;ci=69+i;di=59+i;end;c=d,c;Name= Jack,Marry,Peter, Rose, Tom;Mark=72,83,56,94,100;Rank=cell(1,5);S=struct(Name,Name,Marks,Mark,Rank,Rank);2022/8/1275for i=1:5 switch S(i).Marks case 100 S(i).Rank=满分; case a S(i).Rank= 优秀; c

19、ase b S(i).Rank= 良好; case c S(i).Rank= 及格; otherwise S(i).Rank=不及格; endenddisp(学生姓名 , 得分 , 等级); disp( )for i=1:5; disp(S(i).Name,blanks(6),num2str(S(i).Marks),blanks(6),S(i).Rank);end; 结果:学生姓名 得分 等级 Jack 72 及格 Marry 83 良好 Peter 56 不及格 Rose 94 优秀 Tom 100 满分 2022/8/12762.5 基本绘图方法2.5.1 直角坐标中的两维曲线plot(y

20、) 以y的下标作为x坐标,以y值作为y坐标。plot(x,y) 数组x和y的长度应匹配。每次绘制将清除以前的图形。2022/8/12772.5.1 直角坐标中的两维曲线图形的标注和图例1、title(text) %给图形加上标题2、xlabel(text) %给X轴加上说明3、ylabel(text) %给Y轴加上说明4、zlabel(text) %给Z轴加上说明5、text(x,y,string) %在图形指定位置加上说明6、gtext(string) %利用鼠标在图形加上说明7、legend(string1,string2,.) %给图形加图例8、legend off %关闭图例2022/

21、8/1278如:作y=sin(t)的二维图形t=linspace(0,3*pi,200);y=sin(t);plot(t,y);title(y=sin(t);xlabel(t/s);ylabel(y=sin(t);text(3,0.4,y=sin(t);legend(y=sin(t);gtext(y=sin(t)2022/8/12792.5.2 线型、点型和颜色plot(x,y,r:) 后面是颜色和线型标识符颜色标识符线型标识符线型y黄.点S正方形标记m品红o圆圈D菱形标记c青xX号朝上三角形r红+号V朝下三角形g绿-实线朝右三角形b蓝*星号1error( VAL must be a scal

22、ar. )end这里,如果变量val 不是一个标量,error 显示消息字符串,把控制权返回给命令窗口和键盘。2022/8/12116M函数文件示例。circle.mfunction sa = circle(r,s)%CIRCLE plot a circle of radii r in the line specified by s.%r指定半径的数值%s指定线色的字符串%sa圆面积% circle(r)利用蓝实线画半径为 r 的圆周线.% circle(r,s)利用串 s 指定的线色画半径为 r 的圆周线.% sa=circle(r)计算圆面积,并画半径为 r 的蓝色圆面.% sa=circ

23、le(r,s)计算圆面积,并画半径为 r 的 s 色圆面.% 编写于2006年4月7日,修改于2006年6月27日。2022/8/12117if nargin2 error(输入宗量太多。);end;if nargin=1 s=b;end;clf;t=0:pi/100:2*pi;x=r*exp(i*t);if nargout=0 plot(x,s);else sa=pi*r*r; fill(real(x),imag(x),s)endaxis(square) 2022/8/12118第3章 MATLAB 的开发环境和工具 3.1 MATLAB与其它软件的接口关系3.2 MATLAB的文件管理系统

24、3.3 MATLAB 6.x的开发环境2022/8/121193.1 MATLAB与其它软件的接口关系3.1.1 与磁盘操作系统的接口关系1、变量的存储和下载 如:save aa a b c %将内存变量a, b, c内容以文件aa.mat的方式存储在磁盘中。 或save aa a b c ascii %以ASCII码格式存储2022/8/121203.1.1 与磁盘操作系统的接口关系 load aa 表示将磁盘上存储的aa.mat 数据文件内容取回到工作空间即内存中。 此时内存中的变量与存储时的变量相同。 此时必须注意,原来内存中不能有与提取文件中的变量相同的变量,否则原来内存中的变量内容将

25、被取代而丢失。2022/8/121213.1.1 与磁盘操作系统的接口关系2、工作日志的记录 diary 命令可以把MATLAB工作过程中的全部屏幕文字和数据以文本方式记录下来,成为一个工作记录。 diary on %默认文件名diary.txt diary bbb %文件名为bbb.txt diary off %结束记录2022/8/121223.1.1 与磁盘操作系统的接口关系3、日期和时间命令%提取年月日时分秒数据并求差值 t0=clock; y=inv(rand(100,100); etime(clock,t0) t=cputime; %以开机时间为基准 y=inv(rand(100,

26、100); cputime-t tic; %秒表置零,求经历的时间 y=inv(rand(100,100); toc2022/8/121233.1.1 与磁盘操作系统的接口关系4、不退出MATLAB环境运行其他软件 格式: !命令 2022/8/121243.1.2 与文字处理系统WINWORD 的关系利用剪贴板进行交互文字编辑器的使用Notebook软件工具2022/8/121253.1.3 图形文件的转储可以利用图形窗口中 figure copy来粘贴。可以利用图形窗口File菜单中的导出子菜单Export来选择需要存储的图形文件格式。可以利用图形窗口的工具对图形进行一些相关处理。2022

27、/8/121263.1.4 低层输入输出函数库主要是实现文件内容的相互交换。如:map=imread(aa.bmp)就是将图象数据读入map中。每条命令的使用可以通过HELP查阅。2022/8/121273.2 MATLAB的文件管理系统MATLAB 自身的用户文件格式1、程序文件 .m2、数据文件.mat3、可执行文件.mex4、仿真模型文件.mdl5、仿真文件.s2022/8/121283.2 MATLAB的文件管理系统who(whos)cd(chdir,pwd)dir(ls)typewhatwhichclcedit!echoloadclear/packsavediary2022/8/12

28、1293.3 MATLAB 6.X的开发环境这里主要通过MATLAB 6.0的演示来获得开发环境的了解。1、命令窗口 2、历史命令窗口3、资源目录本 4、当前路径浏览器5、工作空间浏览器 6、帮助浏览器7、数组编辑器 8、程序编辑器要掌握最基本的环境使用。2022/8/12130第4章 MATLAB的其他函数库4.1 数据分析函数库datafun4.2 矩阵的分解与变换matfun4.3 多项式函数库polyfun4.4 函数功能和数值积分函数库funfun4.5 字符串函数库strfun4.6 稀疏矩阵函数库sparfun4.7 图形界面函数库guitools4.8 数据类型函数库datat

29、ypes 2022/8/121314.1 数据分析函数库datafuncorrcoef(x)求相关系数cov(x)协方差矩阵cplxpair(x)把向量分类为复共轭对cross(x, y)向量的向量积cumprod(x)列累计积cumsum(x)列累计和del2(A)五点离散拉氏算子diff(x) 计算元素之间差dot(x, y)向量的点积gradient(Z, dx, dy)近似梯度histogram(x)直方图和棒图max(x), max(x, y)最大分量mean(x)均值或列的平均值median(x)列的中值min(x), min(x, y)最小分量prod(x)列元素的积rand(x

30、)均匀分布随机数randn(x)正态分布随机数sort(x)按升序排列std(x)列的标准偏差subspace(A, B)两个子空间之间的夹角sum(x)各列的元素和2022/8/121324.1 数据分析函数库datafun4.1.1 基本的数据分析1. max %求各列最大值min %求各列最小值 mean %求各列平均值std %求各列标准差median %求各列中间元素sum %求各列和trapz %梯形法求积分 diff %求差分sort %排序 2022/8/12133max(A)=0.9501 0.8214 0.9218 0.9355min(A)=0.2311 0.0185 0.

31、1763 0.4057mean(A)=0.6331 0.5006 0.6487 0.7124std(A)=0.2963 0.3197 0.2861 0.2783median(A)=0.6068 0.4565 0.7382 0.8936sum(A)=3.1654 2.5032 3.2437 3.5620trapz(A)=2.2447 1.8998 2.8478 2.9123diff(A)=-0.7190 -0.3056 0.1765 0.5298 0.3757 -0.4380 0.1299 -0.0186 -0.1209 0.8029 -0.1836 -0.5066 0.4053 -0.3767

32、 -0.5619 0.4834sort(A)=0.2311 0.0185 0.1763 0.4057 0.4860 0.4447 0.6154 0.4103 0.6068 0.4565 0.7382 0.8936 0.8913 0.7621 0.7919 0.9169 0.9501 0.8214 0.9218 0.93552022/8/121344.1 数据分析函数库datafun4.1.2 用于场论的数据分析函数1、gradient %求梯度2、del2 %拉普拉斯算子3、cross %求矢量积4、dot %求数量积2022/8/121354.1 数据分析函数库datafun4.1.3 用于

33、随机数据分析的函数1、rand(m,n)2、randn(m,n)3、hist(x) %画直方图4、hist(x,N) %N等份画直方图2022/8/12136x=rand(1,1000);plot(x)hist(x)2022/8/12137x=randn(1,1000);plot(x)hist(x); hist(x,50);2022/8/121384.1 数据分析函数库datafun4.1.4 用于相关和傅立叶分析的函数1、corrcoef(x,y) %相关系数2、cov(x,y) %协方差 3、conv(x,y) %卷积和多项式相乘4、deconv(x,y) %反卷积和多项式相除5、filt

34、er(b,a,x) %一维数据滤波6、X=fft(x,N) %快速傅立叶变换7、X=ifft(X) %逆傅立叶变换8、sound(u,s) %向量变为声音9、filter2, conv2,deconv, fft2,ifft2等2022/8/12139x=rand(1,1000);y=randn(1,1000); R= 1.0000 0.0094R=corrcoef(x,y) 0.0094 1.0000 %对角线是自相关系数Z=cov(x,y) Z = 0.0835 0.0026 0.0026 0.8928%对角线是x和y的均方差P=conv(x,y); %卷积 P长度为Mx+Ny-1如 x=1

35、 3 2 1; y=1 2 2;Q ,R=deconv(x,y)则:Q = 1 1R = 0 0 -2 -12022/8/12140%构造受噪声污染的信号clear; randn(state,0); t=linspace(0,10,512);y=3*sin(5*t)-6*cos(9*t)+5*randn(size(t); plot(t,y) %绘制幅频曲线Y=fft(y);Ts=t(2)-t(1)%时间信号的采样周期Ws=2*pi/Ts;%时间信号的采样频率Wn=Ws/2 %Nyquest频率w=linspace(0,Wn,length(t)/2);%半采样频率中相应的刻度Ya=abs(Y(1

36、:length(t)/2);plot(w,Ya) %绘制局部放大的幅频曲线ii=find(w0找到零点后退出Options为优化迭代所采用的参数选项function y=jszero(t,a,b) y=sin(t).2.*exp(-a.*t)-b.*abs(t); z,fz=fzero(jszero,1.6,0.1,0.5)2022/8/12172(三)积分 (分割,求和) trapz 梯形法求积分 quad 辛普森递归法求积分(精确) quad8 牛顿-克斯特斯递归法(更精确) x=1.5:0.02:5; %人为分割y=10*exp(-x).*cos(x);a=trapz(x,y)a = -

37、1.07571950613197x=1.5:0.005:5;y=10*exp(-x).*cos(x);a=trapz(x,y)a= -1.075795412897992022/8/12173求定积分:quad() 采用递推自适应Simpson法quad(函数名,初值x0,终值xf)求定积分quad(fun,a,b,TOL,TRACE,P1,P2,.) tol 控制绝对误差,trace 取非零 将逐点画。 F = inline(1./(x.3-2*x-5); Q = quad(F,0,2);Q = quad(myfun,0,2); function y = myfun(x) y = 1./(x.

38、3-2*x-5);2022/8/12174quadl()采用递推自适应Lobatto法 F = inline(1./(x.3-2*x-5); Q = quadl(F,0,2); Q = quadl(myfun,0,2); function y = myfun(x) y = 1./(x.3-2*x-5); 2022/8/12175ode45采用4,5阶龙格库塔法求解微分方程常用龙格-库塔法进行数值积分求解微分方程(非病态):t,x=ode23(xfun,t0,tf,x0,tol,trace) %2阶3阶算法(低阶)t,x=ode45(xfun,t0,tf,x0,tol,trace) %4阶5阶算

39、法(中阶)这里的方程必须是形如 的一阶常微分方程组。 t0、tf:起始、终止时间 x0:初始状态向量 tol:控制精度 trace:附加参数返回值x是矩阵,其列数为方程阶次n,行数和t的个数相同。每一行为同一时间系统各状态值。对于病态系统,一般采用可变阶次算法ode15s ()。其它算法: ode23s(病、低阶) , ode23t(梯形法、中等病态) ode113(非病、变阶), ode23tb(病态,低阶、梯形)2022/8/12176x,y=ode45(函数名,自变量初值x0,自变量终值xf,因变量初值x0); t,y=ode45(vdp1,0 20,2; 0); plot(t,y(:,

40、1);figure; plot(y(:,1),y(:,2);function yp=vdp1(t,y) r=2; yp(1)=y(2); yp(2)=-r*(y(1).2-1)*y(2)-y(1); yp=yp; % yp=y(2);-r*(y(1).2-1)*y(2)-y(1);2022/8/12177t,y=ode45(vdp2,0, 30,1;0;0;1 )plot(t,y(:,1)function yp=vdp2(t,y) yp(1)=y(2); yp(2)=y(3); yp(3)=y(4); yp(4)=-y(4)-(y(1)2+y(1)*y(3)-(y(1)+1)*y(2)-y(1

41、); yp=yp; %yp=y(2);y(3);y(4);-y(4)-(y(1)2+y(1)*y(3)-(y(1)+1)*y(2)-y(1)2022/8/12178x(1)=x;x(2)=dx/dt;function ydot=DyDt(t,x) mu=2; ydot=x(2);mu*(1-x(1)2)*x(2)-x(1);tt,yy=ode45(DyDt,0,30,1;0);plot(tt,yy(:,1);title(x(t);2022/8/121794.5 字符串函数库strfuneval(string) 作为一个MATLAB 命令求字符串的值blanks(n) 返回一个n 个零或空格的字

42、符串deblank 去掉字符串中后拖的空格feval 求由字符串给定的函数值findstr 从一个字符串内找出字符串isletter 字母存在时返回真值2022/8/12180isspace 空格字符存在时返回真值isstr 输入是一个字符串,返回真值lasterr 返回上一个所产生MATLAB 错误的字符串strcmp 字符串相同,返回真值strrep 用一个字符串替换另一个字符串strtok 在一个字符串里找出第一个标记2022/8/12181eval的使用P1=0.1;P2=0.5;y=sin(x).2.*exp(-P1*x)-P2*abs(x); x=-10:0.01:10;Y=eva

43、l(y);plot(x,Y);grid on2022/8/121824.5 字符串函数库strfun字 符 串 转 换dec2hex十进制数到十六进制字符串转换fprintf把格式化的文本写到文件中或显示屏上hex2dec十六进制字符串转换成十进制数hex2num十六进制字符串转换成IEEE浮点数int2str整数转换成字符串lower字符串转换成小写2022/8/12183num2str数字转换成字符串char 数值转换为ASCII字符串sprintf用格式控制,数字转换成字符串sscanf用格式控制,字符串转换成数字str2mat字符串转换成一个文本矩阵str2num字符串转换成数字upp

44、er字符串转换成大写2022/8/12184串数组的属性和标识 1、创建字符串数组-用单引号对A=This is an example.2、字符串大小-字符个数m,n=size(A)3、串数组的元素标识A14=A(1:4) %提取子字符串ra=A(end:-1:1) %字符串倒排ra = .elpmaxe na si sihT2022/8/121854、串数组的ASCII码ascii_a=double(A); %产生ASCII码 ascii_a=84 104 105 115 32 105 115 32 97 110 32 101 120 97 109 112 108 101 46 char(a

45、scii_a) %把ASCII码变回字符串5、对字符串ASCII码数组的操作W=find(A=a&A1) ,hold on,end, end;,hold off,); 2022/8/122312022/8/12232(3)形成坐标网格控制按键 h_push1=uicontrol(h_fig,style,push,. unit,normalized,position,0.67,0.37,0.12,0.15,. string,grid on,callback,grid on);h_push2=uicontrol(h_fig,style,push,. unit,normalized,position

46、,0.67,0.15,0.12,0.15,. string,grid off,callback,grid off);2022/8/122332022/8/12234(4)输入阻尼比系数,可得单位阶跃响应曲线 2022/8/12235利用控制对象面板设计1在Matlab中选中File-New-GUI2选中Blank GUI(Default)3选中Axes作坐标,并存盘4选Static Text并在图中选择,双击写字符串5选择Edit编辑文本框,Tag取名fdisp,同时编写fdisp.m 并在Callback调用fdisp.m6增加Grid on 和Grid off按钮2022/8/12236%

47、fdisp.m脚本文件clear all% z=str2num(get(findobj(gcbf,tag,fdisp),string);z=str2num(get(gcbo,string)t=0:0.1:15;for k=1:length(z) y(:,k)=step(1,1 2*z(k) 1,t); plot(t,y(:,k); if (length(z)1) hold on endendhold off2022/8/122372022/8/12238实例分析1先创建一个图形窗口,键入figure,并保存为ex01.fig2在Matlab菜单中选中File-New-GUI建立一个新的控制对象

48、面板3从控制面板菜单中选File-New-Open-ex014选中Axes作坐标5添加编辑文本框,Tag取名ex_edit,同时编写ex_edit.m 并在Callback调用ex_edit.m2022/8/122396增加Load, Apply, Grid on ,Grid off ,Close按钮,并增加弹出菜单(Popup Mean);增加两个静态文本Input data和Color choose7加入popmenu,string为spring,summer, autumn, winter, callback和tag为ex_color,8选mean editornew menu-labe

49、l和tag输ex_view,再增加view_2D,view_3D,Callback为view(2),view(3)2022/8/12240ex_edit.m ex_load.m%ex_edit.mfunction ex_editct=get(findobj(gcbf,tag,ex_edit),string);save mydata ct%ex_load.mfunction ex_loadload mydataset(gcbf,userdata,ct);2022/8/12241ex_apply%ex_applyfunction ex_applyct=get(gcbf,userdata);eval

50、(ct);plot(x,y)%Closeclose(gcbf)2022/8/12242%ex_color%ex_color function ex_colorpopstr=spring,summer,autumn,winter;vpop=get(findobj(gcf,tag,ex_color), value);colormap(eval(popstrvpop);2022/8/122432022/8/122444.8 数据类型函数库datatypes元胞数组C_str=char(这是,元胞数组创建算例 1);R=reshape(1:9,3,3);Cn=1+2i;S_sym=sym(sin(-3

51、*t)*exp(-t)A(1,1)=C_str;A(1,2)=R;A(2,1)=Cn;A(2,2)=S_sym;A=C_str,R,Cn,S_symA2022/8/12245结果:A= 2x10 char 3x3 double 1.0000+ 2.0000i 1x1 sym显示内容:A1,1A1,2A1,42022/8/12246元胞数组在存放和操作字符串上的应用a=MATLAB 5 ;b=introduces new data types:;c1=Multidimensional array;c2=User-definable data structure;c3=Cell arrays;c4

52、=Character array;c=char(c1,c2,c3,c4);C=a;b;c;adisp(C1:2); disp( )disp(C3) MATLAB 5 introduces new data types: Multidimensional array User-definable data structureCell arrays Character array 2022/8/12247构架数组 本例通过温室数据(包括温室名、容积、温度、湿度等)演示:单构架的创建和显示。green_=一号房;green_house.volume=2000立方米;green_house.param

53、eter.temperature=31.2 30.4 31.6 28.7 29.7 31.1 30.9 29.6;green_house.parameter.humidity=62.1 59.5 57.7 61.5 62.0 61.9 59.2 57.5;2022/8/12248green_house green_house = name: 一号房 volume: 2000立方米 parameter: 1x1 struct green_house.parameter ans = temperature: 2x4 double humidity: 2x4 double 2022/8/12249g

54、reen_house.parameter.temperature ans = 31.2000 30.4000 31.6000 28.7000 29.7000 31.1000 30.9000 29.6000 2022/8/12250利用构造函数创建构架数组 a=cell(2,3);green_house_1=struct(name,a,volume,a,parameter,a(1,2) green_house_1 = 2x3 struct array with fields: name volume parameter 2022/8/12251利用构造函数创建构架数组green_house_2=

55、struct(name,a,volume,parameter,) green_house_2 = 2x3 struct array with fields: name volume parameter 2022/8/12252利用构造函数创建构架数组green_hopuse_3(2,3)=struct(name,volume,parameter,) green_hopuse_3 = 2x3 struct array with fields: name volume parameter 2022/8/12253利用构造函数创建构架数组a1=六号房;a2=3200立方米;green_house_4

56、(2,3)=struct(name,a1,volume,a2,parameter,);T6=31.2,30.4,31.6,28.7;29.7,31.1,30.9,29.6;green_house_4(2,3).parameter.temperature=T6;green_house_4 ans = 2x3 struct array with fields: name volume parameter 2022/8/12254第五章 MATLAB的SIMULINK仿真SIMULINK是一个进行动态系统建模、仿真和综合分析的集成软件包。它可以处理的系统包括:线性、非线性系统;离散、连续及混合系统;

57、单任务、多任务离散事件系统。在 SIMULINK 提供的图形用户界面GUI上,只要进行鼠标的简单拖拉操作就可构造出复杂的仿真模型。它外表以方块图形式呈现,且采用分层结构。从建模角度讲,这既适于自上而下(Top-down)的设计流程(概念、功能、系统、子系统、直至器件),又适于自下而上(Bottum-up) 逆程设计。2022/8/12255MATLAB的SIMULINK仿真从分析研究角度讲,这种 SIMULINK 模型不仅能让用户知道具体环节的动态细节,而且能让用户清晰地了解各器件、各子系统、各系统间的信息交换,掌握各部分之间的交互影响。在 SIMULINK 环境中,用户将观察到现实世界中非线

58、性因素和各种随机因素对系统行为的影响。在 SIMULINK 环境中,用户可以在仿真进程中改变感兴趣的参数,实时地观察系统行为的变化。2022/8/12256MATLAB的SIMULINK仿真在MATLAB 6.0 版中,可直接在 SIMULINK 环境中运作的工具包很多,已覆盖通信、控制、信号处理、DSP、电力系统等诸多领域,所涉内容专业性极强。本讲由浅入深地讲述 SIMULINK 对各种数学、工程问题的建模、仿真和分析的基本方法,采用“算例”作为主体,配以适量的归纳性表述。2022/8/12257模型的创建和模型文件SIMULINK 模型是什么?SIMULINK 模型有以下几层含义:在视觉上

59、表现为直观的方框图;在文件上则是扩展名为 mdl 的ASCII代码;在数学上表现为一组微分方程或差分方程; 在行为上则模拟了实际系统的动态特性 。2022/8/12258SIMULINK 模型通常包含三种 “组件”:信源( Sources):可以是常数、时钟、白噪声、正弦波、阶梯波、扫频信号、脉冲生成器、随机数产生器等信号源; 系统( System):即指被研究系统的 SIMULINK 方框图; 信宿( Sink):可以是示波器、图形记录仪等。对于具体的 SIMULINK 模型而,不一定完全地包含这三大组件。例如:研究初始条件对系统影响就不必包含信源组件。2022/8/12259SIMULIN

60、K 模型的创建创建模型文件;选择对象; 模块的操作; 连线的操作; 对模型的注释; 创建子系统; 仿真的配置 ; 保存模型;仿真和结果分析。2022/8/12260仿真运行使用菜单进行仿真设置仿真参数和选择求解器通过选择菜单 Simulation 下的 Parameters 菜单项,用来设置仿真参数和选择求解器。其中有三个页面管理这些仿真参数。在 Solver 页面,设置开始和停止时间,选择求解器和指定求解器(solver)的参数,另外还可以选择一些输出选项。在 Solver options 中, SIMULINK 模型的仿真涉及到一组常微分方程(ODEs)的数值积分。如果模型是连续系统,使用

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论