自动控制原理课程设计MATLAB及应用

上传人:痛*** 文档编号:156797575 上传时间:2022-09-27 格式:PPT 页数:356 大小:1.90MB
收藏 版权申诉 举报 下载
自动控制原理课程设计MATLAB及应用_第1页
第1页 / 共356页
自动控制原理课程设计MATLAB及应用_第2页
第2页 / 共356页
自动控制原理课程设计MATLAB及应用_第3页
第3页 / 共356页
资源描述:

《自动控制原理课程设计MATLAB及应用》由会员分享,可在线阅读,更多相关《自动控制原理课程设计MATLAB及应用(356页珍藏版)》请在装配图网上搜索。

1、自动控制原理课程设计MATLAB及应用 Still waters run deep.流静水深流静水深,人静心深人静心深 Where there is life,there is hope。有生命必有希望。有生命必有希望参考书目参考书目目 录 第1章 MATLAB 语言概述 第2章 基本语法 第3章 MATLAB 的开发环境和工具 第4章 MATLAB 的其他函数库 第5章 MATLAB的的SIMULINK仿真仿真 第6章 MATLAB在自动控制原理中应用第1章 MATLAB语言概述 1.1 MATLAB语言的发展 1.2 MATLAB语言的特点 1.3 MATLAB的工作环境 1.3.1 命令

2、窗 1.3.2 图形窗 1.3.3 文本编辑窗 1.4 演示程序 1.5 网络资源1.1 MATLAB语言的发展 1.1.1 MATLAB 概述 MATLAB是集数值计算、符号运算及图形处理等强大功能于一体的科学计算语言,是一种交互式的以矩阵为基础的系统计算平台,它用于科学和工程的计算与可视化。它的优点在于快速开发计算方法,而不在于计算速度。MATLAB已成为一门高校必修的课程,也是最为普遍的计算工具之一。1.1 MATLAB语言的发展(续)1997年仲春,年仲春,MATLAB5.0版问世,紧接着是版问世,紧接着是5.1、5.2,以及和以及和1999年春的年春的5.3版。现今的版。现今的MAT

3、LAB拥有更丰富拥有更丰富的数据类型和结构、更友善的面向对象、更加快速精的数据类型和结构、更友善的面向对象、更加快速精良的图形可视、更广博的数学和数据分析资源、更多良的图形可视、更广博的数学和数据分析资源、更多的应用开发工具。的应用开发工具。2000年末又推出6.0版本。无论在界面的设计上还是在内容上较以前版本都有很大的进展。1.1 MATLAB语言的发展(续)1.1.3 Matlab的版本演化Matlab 1.0Pc matlab-matlab 386Matlab3.5+simulinkMatlab 4.0:simlink内嵌(1992)Matlab 5.0:全面的面向对象Matlab 5.

4、15.3 (1999)Matlab 6.0 (2000)Matlab 6.5:购并了MATRIXxMatlab 7.0:(2004)1.2 MATLAB语言的特点 友好的工作平台和编程环境 简单易用的程序语言 强大的科学计算及数据处理能力 出色的图形处理功能 应用广泛的模块集和工具箱 实用的程序接口和发布平台 模块化的设计和系统级的仿真1.3 MATLAB的工作环境1.3.1 命令窗(Command Window)单行命令执行方式 执行结果直接显示1.3.2 图形窗(Figure Window)用图形方式表示计算结果1.3.3 文本编辑窗(File Editor)多行命令组成语言组,可以文件方

5、式存盘下面就具体看一下MATLAB 的工作环境演示。1.4 演示程序 在MATLAB的命令窗中键入 demo或demos%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,col

6、or,b,linestyle,-,erasemode,xor);t=0;dt=0.01;while t=50 t=t+dt;theta=theta0*cos(sqrt(g/l)*t);x=l*sin(theta);y=-l*cos(theta);set(head,xdata,x,ydata,y);set(body,xdata,0;x,ydata,0;y);drawnow;end部分命令的演示例1.求 的算术运算结果。(12+2*(7-4)/32 ans=2 例2.简单矩阵 的输入步骤。A=1,2,3;4,5,6;7,8,9 A=1 2 3 4 5 6 7 8 923)47(2129876543

7、21A例5.复数 表达,及计算 。(1)z1=3+4i z1=3.0000+4.0000i (2)z2=1+2*iz3=2*exp(i*pi/6)z=z1*z2/z3 z2=1.0000+2.0000iz3=1.7321+1.0000iz=0.3349+5.5801i ieziziz63212,21,43321zzzz 例6.复数矩阵的生成及运算 A=1,3;2,4-5,8;6,9*i B=1+5i,2+6i;3+8*i,4+9*i C=A*B A=1.0000-5.0000i 3.0000-8.0000i 2.0000-6.0000i 4.0000-9.0000i B=1.0000+5.00

8、00i 2.0000+6.0000i 3.0000+8.0000i 4.0000+9.0000i C=1.0e+002*0.9900 1.1600-0.0900i 1.1600+0.0900i 1.3700 例7.求上例复数矩阵C的实部、虚部、模和相角。C_real=real(C)C_imag=imag(C)C_magnitude=abs(C)C_phase=angle(C)*180/pi C_real=99 116 116 137 C_imag=0 -9 9 0 C_magnitude=99.0000 116.3486 116.3486 137.0000 C_phase=0 -4.4365

9、4.4365 0 38(3)图形表示 t=0:pi/20:2*pi;x=R*sin(t);y=R*cos(t);plot(x,y,b:),grid hold on plot(rrr(1),.,MarkerSize,30,Color,r)plot(rrr(2,3),o,MarkerSize,15,Color,b)axis(-3,3,-3,3),axis square hold off -3-2-10123-3-2-10123例9.画出衰减振荡曲线 及其它的包络线 。t的取值范围是 t=0:pi/50:4*pi;y0=exp(-t/3);y=exp(-t/3).*sin(3*t);plot(t,y

10、,-r,t,y0,:b,t,-y0,:b)teyt3sin330tey4,002468101214-1-0.8-0.6-0.4-0.200.20.40.60.81 例10.画出 所表示的三维曲面。的取值范围是-8,8.clear;x=-8:0.5:8;y=x;X=ones(size(y)*x;Y=y*ones(size(x);R=sqrt(X.2+Y.2)+eps;Z=sin(R)./R;mesh(X,Y,Z);colormap(hot)xlabel(x),ylabel(y),zlabel(z)2222)sin(yxyxzyx,1.5 网络资源oUSENET新闻组MATLAB的新闻组是comp

11、.soft-sys.MATLAB。浏览器指向http:/ http:/o网络上的工具箱http:/ 网络资源(续)oBBS哈尔滨工业大学bbs:telnet:/上海交通大学bbs:telnet:/清华大学bbs mathtoolsowww服务http:/http:/Matlab 大观园:http:/www.matlab-第2章 基本语法 2.1 变量及其赋值 2.2 矩阵的初等运算 2.3 元素群运算 2.4 逻辑判断及流程控制 2.5 基本绘图方法 2.6 M文件及程序调试2.1 变量及其赋值 2.1.1 标识符与数 标识符是标识变量名、常量名、函数名、文件名的字符串的总称。1、表示符第1个

12、字符必须是字母。2、长度不超过31个。3、区分大小写。4、变量中不能含有标点符号。5、变量可直接参与计算。6、变量一般无需事先定义2.1.1 标识符与数(续)7、特殊变量2.1.1 标识符与数(续)8、数值显示格式 MATLAB中所有的量为双字长浮点数,显示按下面显示规则:n在缺省情况下,当结果为整数,作为整数显示;当结果为实数,以小数后4位的精度近似显示。n 如果结果中的有效数字超出了这一范围,以科学计数法显示结果。nformat命令改变显示格式,常用的的格式有 long(16位)bank(2个十进制位)hex(十六进制)short(缺省)short e(5位加指数)+(符号)1.long

13、e(16位加指数)rat(有理数近似)2.1.2 矩阵及其元素的赋值 矩阵获取格式:变量=表达式(或数)1、直接输入:A=1 2 3;4 5 6;7,8,9 *矩阵用中括号括起。矩阵用中括号括起。*元素间用空格隔开,或用逗号隔开。元素间用空格隔开,或用逗号隔开。*每行用分号;号表示回车。每行用分号;号表示回车。2、行向量 B=1 2 3 4 53、列向量 C=1;2;3;4;5;每行命令后面的分号;表示结果不显示每行命令后面的分号;表示结果不显示。2.1.2 矩阵及其元素的赋值(续)4、元素可用表达式表示 D=-1.3 sqrt(3)(1+2+3)/5+15、用语句生成 行向量 E=from:

14、step:to 即E=开始数:步长:结束数 E=1:2:10 得E=1 3 5 7 96、矩阵连接 B=a b V=a;b2.1.2 矩阵及其元素的赋值(续)7、用函数创建 如:zeros(m,n)ones(m,n)eye(m,n)zeros(3);zeros(3,3);zeros(2,3);zeros(3,2);ones(3);ones(3,3);ones(2,3);ones(3,2);eye(3);eye(3,3);eye(3,4);eye(4,3);0000000001111110001000100012.1.2 矩阵及其元素的赋值(续)2.1.2 矩阵及其元素的赋值(续)矩阵中的元素(

15、用圆括号中数字来注明)1.A(i,j)表示第i 行,第j列元素。2.A(i)表示第i个元素。矩阵中元素的排序如右所示矩阵中元素的排序如右所示3.A(i,j)=常量,表示给A中元素赋值。当下标超出原矩阵的尺寸,则自动扩展行列并补零。当下标超出原矩阵的尺寸,则自动扩展行列并补零。20161284191511731814106217139512.1.2 矩阵及其元素的赋值(续)4.A(:,j)表示A阵中第j 列所有元素。5.A(i,:)表示A阵中第i 行所有元素。6.A(2:3,4:6)表示第2行到第3行,第4列到第6列的子矩阵。7.A(3:7)指A阵中第3个到第7个元素(列优先)(列优先)矩阵的序

16、号编址:按列计数。8.A(2)=表示去除矩阵中元素。此时矩阵变为行矩阵。9.A(:)指A阵中所有元素组成列向量。2.1.3 复数 复数的虚部部分用i 或j表示。如:2+3i,3-4j 复数可直接计算。如如:z=2+3i;3-4j 或 f=z+2+j;3;复数的实部和虚部可分别赋值。但 i和j需先清除。如:clear i j f=1,3;5,7+2,4;6,8*j2.1.3 复数2.1.3 复数2.1.4 变量的查询,存储,提取 变量的查询 who 或 whos 变量的存储 save 文件名.mat 变量列表 如:save sar a b c 变量中间用空格隔开,不能加逗号。变量的提取 load

17、 文件名 变量的清除 clear 变量列表 清除所有变量 clear all2.1.5 基本赋值矩阵G=linspace(a,b,n)线性分隔,a,b之间均匀产生n个数H=logspace(a,b,n)对数分隔,a,b之间产生n个数K=diag(A);取A中对角线元素得到列向量列向量。P=diag(diag(A)产生对角阵 a=1 2 3 4;b=diag(a)产生对角阵如 A=1 2 3;4 5 6;7 8 9 B=diag(A)则:B=1;5;9;4000030000200001b2.2 矩阵的初等运算 2.2.1 矩阵的加减乘除矩阵的加减乘除1、+,-,*,/,2、点乘:、点乘:.*右除

18、:右除:./左除:左除:.C=A+B;C=A-B C=A*B 注意:矩阵注意:矩阵 必须相匹配必须相匹配 X=AB 表示表示AX=B X=A-1B 即 X=inv(A)*B X=A/B 表示表示XB=A X=AB-1 即 X=A*inv(B)m,n=size(A)计算矩阵计算矩阵A的行列大小的行列大小 K=length(A)计算矩阵计算矩阵A的行列大小中最大的数的行列大小中最大的数2.2.1 矩阵的加减乘除 点乘、点除 C=A.*B 对应元素间相乘。2012624321*.5432 C=A./B 对应元素间相除。C=A.B5815124321/.202430128.075.0125.04321

19、.54242.2.2 矩阵除法及线性方程组的解2.2.3 矩阵的乘方和幂次函数1、矩阵乘方矩阵乘方2、.元素对元素的乘方元素对元素的乘方 C=An 表示A阵自乘n次。C=A(-n)表示A阵的逆矩阵自乘n次。C=A.n 表示A阵中每个元素自乘n次。C=A.(-n)表示A阵中每个元素自乘n次后的逆阵。C=A2 C=A.2 C=A(-2)=inv(A)2 C=A.(-2)4321A2215107C16941C75.175.35.25.5C0625.0111.025.01C2.2.4 矩阵结构形式的提取与变换 B=fliplr(A)%将A矩阵左右翻转 B=flipud(A)%将A矩阵上下翻转 B=re

20、shape(A,m,n)%将A阵重组为mxn矩阵 B=rot90(A)%将A矩阵逆时针翻转90度 B=diag(A)%提取A矩阵的对角组成列向量 B=tril(A)%提取A矩阵的左下三角部分 B=triu(A)%提取A矩阵的右上三角部分 如:B=fliplr(A)B=flipud(A)B=rot90(A)B=tril(A)987654321A789456123B321654987B741852963B987054001B2.3 元素群运算 2.3.1 数组及其赋值1、t=初值:步长:终值;如t=0:0.1:1 tt=10:-1:12、t=linspace(初值,终值,点数)如:tr=linsp

21、ace(0,2*pi,9)3、t=logspace(初值,终值,点数)如:tp=logspace(0,1,11)2.3.2 元素群的四则运算 表示对矩阵中每个元素进行运算 如如 X=1 2 3;Y=4 5 6 Z=X.*Y Z=4 10 18 Z=X.Y Z=4 2.5 2 Z=X.Y Z=1 32 729 Z=X.N N=2 Z=1 4 9 Z=2.X Y Z=2 4 8 16 32 642.3.3 元素群的函数函数名函数名含义含义abs绝对值或者复数模sqrt平方根real实部imag虚部conj复数共轭round4舍5入到整数fix舍入到最接近0的整数floor舍入到最接近-的整数cei

22、l舍入到最接近的整数2.3.3 元素群的函数函数名函数名含义含义sign符号函数rem留数sin正弦cos余弦tan正切asin反正弦acos反余弦atan反正切atan2第四象限反正切函数名函数名含义含义sinh双曲正弦cosh双曲余弦tanh双曲正切exp自然指数log自然对数log10以10为底的对数bessel贝赛尔函数gamma伽吗函数rat有理逼近2.4 逻辑判断及流程控制2.4.1 关系操作符2.4.2 逻辑运算2.4.3 其他关系与逻辑函数 xor(x,y)异或运算。x或y非零(真)返回1,x和y都是零(假)或都是非零(真)返回0。any(x)如果在一个向量x中,任何元素是非零

23、,返回1;矩阵x中的每一列有非零元素,返回1。all(x)如果在一个向量x中,所有元素非零,返回1;矩阵x中的每一列所有元素非零,返回1。%逻辑函数的运用示例。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)【例】关系运算运用之一:求近似极限,修补图形缺

24、口。t=-2*pi:pi/10:2*pi;y=sin(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.【例】逻辑操作应用之一:逐段解析函数的计算和表现。本例演示削顶整流正弦半波的计算和图形绘制。t=linspace(0,3

25、*pi,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)0510-1-0.8-0.6-0.4-0.200.20.40.60.81y0510-1-0.8-0.6-0.4-0.200.20.40.60.810510-1-0.8-0.6-0.

26、4-0.200.20.40.60.81【例】写出生成下图所示波形的MATLAB脚本文件M文件。图中虚线为正弦波,要求它的负半波被置零,且在 处被削顶。38,37,32,3t=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;endendy2.4.4 流程控制语句 for循环 for循环允许一组命令以固定的次数

27、重复,它的一般形式是 for x=array command end for 和end之间的命令串按数组array的每一列执行一次,直到n次后终止。如:for j=1:2:10 y=j+j.2;end2.4.4 流程控制语句ofor循环不能使用内部重新赋值循环变量而终止;ofor循环内部接受任何有效的MATLAB数组;ofor循环可以嵌套;o只要有矩阵形式可以解决的问题,不要使用for循环。使用for循环的算法执行很慢,一个好的MATLAB算法不应当出现循环语句。Tic/toco循环可以使用break跳出,但只跳出所在的循环,不跳出整个嵌套结构。2.4.4 流程控制语句 while循环 与fo

28、r循环以固定的次数求一组指令相反,while循环以不定的次数求一组语句的值。While循环的一般形式为:while expression commonds end 只要表达式expression里的所有元素为真,就执行命令串commands。通常表达式求值给一个标量值,单数组值也同样有效。求1001xxy NjNijiyy111y=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

29、);j=j+1;end i=i+1;endy【例】Fibonacci数组的元素满足Fibonacci 规则:,;且 。现要求该数组中第一个大于10000的元素 a(1)=1;a(2)=1;i=2;while a(i)=10000 a(i)break;end;Endi ans=10946i=21 2.4.4 流程控制语句学生的成绩管理,用来演示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=

30、cell(1,5);S=struct(Name,Name,Marks,Mark,Rank,Rank);结果:结果:学生姓名 得分 等级 Jack 72 及格 Marry 83 良好 Peter 56 不及格 Rose 94 优秀 Tom 100 满分 2.5 基本绘图方法2.5.1 直角坐标中的两维曲线 plot(y)以y的下标作为x坐标,以y值作为y坐标。plot(x,y)数组x和y的长度应匹配。每次绘制将清除以前的图形。2.5.1 直角坐标中的两维曲线如:作y=sin(t)的二维图形 t=linspace(0,3*pi,200);y=sin(t);plot(t,y);title(y=sin

31、(t);xlabel(t/s);ylabel(y=sin(t);text(3,0.4,y=sin(t);legend(y=sin(t);gtext(y=sin(t)2.5.2 线型、点型和颜色标识符颜色标识符线型标识符线型yYellow 黄.点S正方形标记mMagenta 品红o圆圈D菱形标记cCyan 青xX号朝上三角形r Red 红+号V朝下三角形gGreen 绿-实线朝右三角形bBlue 蓝*星号1 error(VAL must be a scalar.)end 这里,如果变量val val 不是一个标量,error error 显示消息字符串,把控制权返回给命令命令窗口和键盘。if n

32、argin2 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)第3章 MATLAB 的开发环境和工具 3.1 MATLAB与其它软件的接口关系 3.2 MATLAB的文件管理系统 3.3 MATLAB 6.x的开发环境3.1 MATLAB与其它软件的接口关系3.1.1 与磁盘操作系统的接口关系 load aa 表示将磁盘上存储的aa.mat 数据文件

33、内容取回到工作空间即内存中。此时内存中的变量与存储时的变量相同。此时必须注意,原来内存中不能有与提取文件中的变量相同的变量,否则原来内存中的变量内容将被取代而丢失。3.1.1 与磁盘操作系统的接口关系2、工作日志的记录 diary 命令可以把MATLAB工作过程中的全部屏幕文字和数据以文本方式记录下来,成为一个工作记录。diary on%默认文件名diary.txt diary bbb%文件名为bbb.txt diary off%结束记录3.1.1 与磁盘操作系统的接口关系3、日期和时间命令 t0=clock;%提取年月日时分秒数据并求差值。y=inv(rand(100,100);etime(

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

35、关处理。3.1.4 低层输入输出函数库3.2 MATLAB的文件管理系统 MATLAB 自身的用户文件格式1、程序文件.m2、数据文件.mat3、可执行文件.mex4、仿真模型文件.mdl5、仿真文件.s3.2 MATLAB的文件管理系统 who(whos)cd(chdir,pwd)dir(ls)type what which clc edit!echo load clear/pack save diary3.3 MATLAB 6.X的开发环境 这里主要通过MATLAB 6.0的演示来获得开发环境的了解。1、命令窗口 2、历史命令窗口3、资源目录本 4、当前路径浏览器5、工作空间浏览器 6、帮

36、助浏览器7、数组编辑器 8、程序编辑器要掌握最基本的环境使用。第4章 MATLAB的其他函数库 4.1 数据分析函数库datafun 4.2 矩阵的分解与变换matfun 4.3 多项式函数库polyfun 4.4 函数功能和数值积分函数库funfun 4.5 字符串函数库strfun 4.6 稀疏矩阵函数库sparfun 4.7 图形界面函数库guitools 4.8 数据类型函数库datatypes 4.1 数据分析函数库datafuncorrcoef(x)求相关系数cov(x)协方差矩阵cplxpair(x)把向量分类为复共轭对cross(x,y)向量的向量积cumprod(x)列累计积

37、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)均匀分布随机数randn(x)正态分布随机数 sort(x)按升序排列 std(x)列的标准偏差subspace(A,B)两个子空间之间的夹角 sum(x)各列的元素和4.1 数据分析函数库datafun4.1.1 基本的数据分析1.m

38、ax%求各列最大值min%求各列最小值 mean%求各列平均值std%求各列标准差median%求各列中间元素sum%求各列和trapz%梯形法求积分 diff%求差分2.sort%排序 max(A)=0.9501 0.8214 0.9218 0.9355min(A)=0.2311 0.0185 0.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.56

39、20trapz(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 -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

40、0.9218 0.93550.8936 0.1763 0.4447 0.89130.4103 0.7382 0.8214 0.48600.9169 0.9218 0.0185 0.60680.9355 0.7919 0.4565 0.23110.4057 0.6154 0.7621 0.9501A4.1 数据分析函数库datafun 4.1.2 用于场论的数据分析函数1、gradient%求梯度2、del2%拉普拉斯算子3、cross%求矢量积4、dot%求数量积4.1 数据分析函数库datafun 4.1.3 用于随机数据分析的函数1、rand(m,n)2、randn(m,n)3、hist(

41、x)%画直方图4、hist(x,N)%N等份画直方图x=rand(1,1000);plot(x)hist(x)x=randn(1,1000);plot(x)hist(x);hist(x,50);4.1.4 用于相关和傅立叶分析的函数1、corrcoef(x,y)%相关系数2、cov(x,y)%协方差 3、conv(x,y)%卷积和多项式相乘4、deconv(x,y)%卷积和多项式相除5、filter(b,a,x)%一维数据滤波6、X=fft(x,N)%快速傅立叶变换7、X=ifft(X)%逆傅立叶变换8、sound(u,s)%向量变为声音9、filter2,conv2,deconv,fft2,

42、ifft2等 x=rand(1,1000);y=randn(1,1000);R=1.0000 0.0094 R=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 3 2 1;y=1 2 2;Q,R=deconv(x,y)则:Q=1 1 R=0 0 -2 -1%构造受噪声污染的信号clear;randn(state,0);t=linspace(0,10,512);y=3*sin(5*t)-6*cos(9*

43、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: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(jsze

44、ro,1.6,0.1,0.5)quad()采用递推自适应Simpson法quadl()采用递推自适应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);ode45采用4,5阶龙格库塔法求解微分方程t,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)-(

45、y(1)+1)*y(2)-y(1);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)2()(1)0yyyy yyyy0)0(,1)0(0)1(222xxxdtdxxdtxd4.5 字符串函数库strfun eval(string)作为一个MATLAB 命令求字符串的值 eval(try,catch)blanks(n)返回一个n 个零或空格的字符串 deblank 去掉字符串中后拖的空格 feval 求由字符串给定的函数值 findstr 从一个字符串内找出字符串 isletter 字母存在时返回真值 isspa

46、ce 空格字符存在时返回真值 isstr 输入是一个字符串,返回真值 lasterr 返回上一个所产生MATLAB 错误的字符串 strcmp 字符串相同,返回真值 strrep 用一个字符串替换另一个字符串 strtok 在一个字符串里找出第一个标记eval的使用P1=0.1;P2=0.5;y=sin(x).2.*exp(-P1*x)-P2*abs(x);x=-10:0.01:10;Y=eval(y);plot(x,Y);grid on4.5 字符串函数库strfun 字 符 串 转 换 abs字符串到ASCII转换 dec2hex十进制数到十六进制字符串转换 fprintf把格式化的文本写

47、到文件中或显示屏上 hex2dec十六进制字符串转换成十进制数 hex2num十六进制字符串转换成IEEE浮点数 int2str整数转换成字符串 lower字符串转换成小写 num2str数字转换成字符串 setstr ASCII转换成字符串 sprintf用格式控制,数字转换成字符串 sscanf用格式控制,字符串转换成数字 str2mat字符串转换成一个文本矩阵 str2num字符串转换成数字 upper字符串转换成大写串数组的属性和标识 复杂串数组的创建 1、多行串数组的直接创建 clear S=This string array has multiple rows.但长度必须相等但长度

48、必须相等 2、由专门函数char,str2mat,strvcat创建多行串数组 S1=char(This string array,has two rows.)S1=This string arrayhas two rows.S2=str2mat(这这,字符字符,串数组串数组,由由4行组行组成成)S2=这 字符 串数组 由4行组成 S3=strvcat(这这,字符字符,串数组串数组,由由4行组成行组成)S3=这 字符 串数组 由4行组成 size(S3)ans=5 5转换函数产生数码字符串 最常用的数组/字符串转换函数int2str,num2str,mat2str A=eye(2,4);A_s

49、tr1=int2str(A)%非整数四舍五入非整数四舍五入 rand(state,0)B=rand(2,4);B3=num2str(B,3)%将非整数转换为串将非整数转换为串 把数值数组转化成输入形态的串数组把数值数组转化成输入形态的串数组 B_str=mat2str(B,4)Expression=exp(-,B_str,);eval(Expression)在MATLAB计算生成的图形上标出图名和最大值点坐标。Y=exp(-2t)*sin(3t)0246810-0.100.10.20.30.40.50.6maximum t=0.33 y=0.4321y=exp(-2t)*sin(3t)tycl

50、ear;a=2;w=3;t=0:0.01:10;y=exp(-a*t).*sin(w*t);ymax,imax=max(y);ttext=t=,num2str(t(imax);ytext=y=,num2str(ymax);maxtext=char(maximum,ttext,ytext);tit=y=exp(-,num2str(a),t)*sin(,num2str(w),t);plot(t,zeros(size(t),k);hold onplot(t,y,b)plot(t(imax),ymax,r.,MarkerSize,20)text(t(imax)+0.3,ymax+0.05,maxtex

51、t)title(tit),xlabel(t),ylabel(y),hold offfprintf,sprintf,sscanf的用法示例 rand(state,0);a=rand(2,2);s1=num2str(a)s_s=sprintf(%.10en,a)fprintf(%.5g,a)0.950130.231140.606840.48598 s_sscan=sscanf(s_s,%f,3,2)s_sscan=%浮点格式把串转换成3X2数值数组 0.9501 0.4860 0.2311 0 0.6068 0 符号计算符号计算合并同类项求积分求积分 int(P)对表达式P进行不定积分。int(P

52、,v)以v为积分变量对P进行不定积分。int(P,v,a,b)以v为积分变量,以a为下限,b为上限对P进行定积分。syms a1 a2 a3 a4 A=a1 a2;a3 a4;DA=det(A);IA=inv(A);EA=eig(A);求定积分 int(f,x,t1,t2)syms A t tao w yf=int(A*exp(-i*w*t),t,-tao/2,tao/2);yf=simple(yf)4321aaaaA 置换操作求 syms x y z f2=int(int(int(x2+y2+z2,z,sqrt(x*y),x2*y),y,sqrt(x),x2),x,1,2)vf2=vpa(f

53、2)%指定精度 vpa(x,n)%指定n位相对精度 2122222)(xxyxxydxdydzzyx求导数求导数 diff(S,v)求表达式S对变量v的一阶导数。diff(S,v,n)求表达式S对变量v的n阶导数。如求sin(x)+ex的三阶导数,键入命令 diff(sin(x)+x*exp(x),3)得 ans=-cos(x)+3*exp(x)+x*exp(x)sym a t x;f=a,t3;t*cos(x);log(x);df=diff(f);dfdt2=diff(f,t,2);dfdxdt=diff(diff(f,x),t);nndvvfdnvfdiffdfdvn)(),(求xxtta

54、dxdlncos3xxttadtdlncos322xxttadxdtdlncos32求和求和 symsum(S)对通项S求和,其中k为变量。且从0变到k-1。symsum(S,v)对通项S求和,指定其中v为变量。且v从0变到v-1。symsum(S,a,b)对通项S求和,其中k为变量。且从a变到b。symsum(S,v,a,b)对通项S求和,指定其中v为变量。且v从a变到b。求极限求极限 limit(P)表达式P中自变量趋于零时的极限。limit(P,a)表达式P中自变量趋于a时的极限。limit(P,x,a,left)表达式P中自变量x趋于a时的左极限。limit(P,x,a,right)表

55、达式P中自变量x趋于a时的右极限。例如:键入 P=sym(sin(x)/x);limit(P)得 ans=1 键入 P=sym(1/x);limit(P,x,0,right)得 ans=inf 键入 P=sym(sin(x+h)-sin(x)/h);h=sym(h);limit(P,h,0)得 ans=cos(x)键入 v=sym(1+a/x)x,exp(-x);limit(v,x,inf,left)得 ans=exp(a),0 线性方程组的求解线性方程组的求解 线性方程组的形式为A*X=B;其中A至少行满秩。X=linsolve(A,B)输出方程的特解X。例如:键入 A=sym(cos(t)

56、,sin(t);sin(t),cos(t);B=sym(1;1);c=linsolve(A,B)c=1/(sin(t)+cos(t)1/(sin(t)+cos(t)代数方程的求解 例:可输入 solve(p+sin(x)=r)得:ans=-asin(p-r)例输入:P1=x2+x*y+y=3;P2=x2-4*x+3=0;x,y=solve(P1,P2)得:x=1;3 y=1;-3/2 可输入:P1=a+u2+v2=0;P2=u-v=1;u,v=solve(P1,P2,u,v)得:u=1/2+1/2*(-1-2*a)(1/2);1/2-1/2*(-1-2*a)(1/2)v=-1/2+1/2*(-

57、1-2*a)(1/2);-1/2-1/2*(-1-2*a)(1/2)对于有些无法求出解析解的非线性方程组,MATLAB只给出一个数值解。这一点可以从表示解的数字不被方括号括住而确定。例如:键入:x,y=solve(sin(x+y)-exp(x)*y=0,x2-y=2)得:x=-6.0173272500593065641097297117905 y=34.208227234306296508646214438330 由于这两个数字没有被 括住,所以它们是数值解。解符号微分方程解符号微分方程 例如:求 的解。可键入:x,y=dsolve(Dx=y,Dy=-x)得x=cos(t)*C1+sin(t)

58、*C2 y=-sin(t)*C1+cos(t)*C2 ydtdxxdtdy例如求 ,f(0)=0,g(0)=1 的解。可输入指令:P=Df=3*f+4*g,Dg=-4*f+3*g;v=f(0)=0,g(0)=1;f,g=dsolve(P,v)f=exp(3*t)*sin(4*t)g=exp(3*t)*cos(4*t)注意:微分方程表达式中字母D必须大写gfdtdf43gfdtdg34求解微分方程 y=dsolve(D3y=-y,y(0)=1,Dy(0)=0,D2y(0)=0,x)得:y=(1/3+2/3*exp(1/2*x)*cos(1/2*3(1/2)*x)*exp(x)/exp(x)ydx

59、yd330,0,1)0(0220 xxdxyddxdyy最后看一个解非线性微分方程的例子:dsolve(Dy)2+y2=1,y(0)=0,x)ans=sin(x)-sin(x)对于无法求出解析解的非线性微分方程,屏幕将提示出错信息。泰勒(taylor)级数的展开格式1:R=taylor(f)%默认x为变量的n-1阶麦克劳林f的多项式格式2:R=taylor(f,n,v)%对符号变量为v的n-1阶麦克劳林f的多项式syms xf=exp(-x);ff=taylor(f)结果:ff=1-x+1/2*x2-1/6*x3+1/24*x4-1/120*x5syms xf=log(x);ff=taylor

60、(f,6,1)结果:ff=x-1-1/2*(x-1)2+1/3*(x-1)3-1/4*(x-1)4+1/5*(x-1)5syms xf=sin(x);ff=taylor(f,6,pi/2)结果:ff=1-1/2*(x-1/2*pi)2+1/24*(x-1/2*pi)4syms x tf=xt;ff=taylor(f,3,t)%展开到t的二次方项结果:ff=1+log(x)*t+1/2*log(x)2*t24.6 稀疏矩阵函数库sparfun4.7 图形界面函数库guitools例:对于传递函数为 的归一化二阶系统,制作一个能绘制该系统单位阶跃响应的图形用户界面。本例演示:(A)图形界面的大致生

61、成过程;(B)静态文本和编辑框的生成;(C)坐标网格控制键的形成;(D)如何使用该界面。1212ssG(1)产生图形窗和轴位框)产生图形窗和轴位框:clf resetH=axes(unit,normalized,position,0,0,1,1,visible,off);set(gcf,currentaxes,H);str=fontname隶书归一化二阶系统的阶跃响应曲线;text(0.12,0.93,str,fontsize,13);h_fig=get(H,parent);set(h_fig,unit,normalized,position,0.1,0.2,0.7,0.4);h_axes=a

62、xes(parent,h_fig,.unit,normalized,position,0.1,0.15,0.55,0.7,.xlim,0 15,ylim,0 1.8,fontsize,8);h_text=uicontrol(h_fig,style,text,unit,normalized,p o s i t i o n ,0.6 7,0.7 3,0.2 5,0.1 4 ,horizontal,left,string,输入阻尼比系数,zeta=);h_edit=uicontrol(h_fig,style,edit,unit,normalized,position,0.67,0.59,0.25,0

63、.14,horizontal,left,callback,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,end,end;,hold off,);(3)形成坐标网格控制按键)形成坐标网格控制按键 h_push1=uicontrol(h_fig,style,push,.unit,normalized,position,0.67,0.37,0.12,0.15,.string,grid on,callb

64、ack,grid on);h_push2=uicontrol(h_fig,style,push,.unit,normalized,position,0.67,0.15,0.12,0.15,.string,grid off,callback,grid off);(4)输入阻尼比系数,可得单位阶跃响应曲线)输入阻尼比系数,可得单位阶跃响应曲线 利用控制对象面板设计1在Matlab中选中File-New-GUI2选中Blank GUI(Default)3选中Axes作坐标,并存盘4选Static Text并在图中选择,双击写字符串5选择Edit编辑文本框,Tag取名fdisp,同时编写fdisp.m

65、 并在Callback调用fdisp.m6增加Grid on 和Grid off按钮%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 off实例分析1先创建一个图形窗口,键入figure,并保存为ex01.fig2在Matlab菜单中选中File-New-G

66、UI建立一个新的控制对象面板3从控制面板菜单中选File-New-Open-ex014选中Axes作坐标5添加编辑文本框,Tag取名ex_edit,同时编写ex_edit.m 并在Callback调用ex_edit.mex_edit.m ex_load.mex_apply%ex_applyfunction ex_applyct=get(gcbf,userdata);eval(ct);plot(x,y)%Closeclose(gcbf)%ex_color%ex_color function ex_colorpopstr=spring,summer,autumn,winter;vpop=get(findobj(gcf,tag,ex_color),value);colormap(eval(popstrvpop);4.8 数据类型函数库datatypes结果:A=2x10 char 3x3 double 1.0000+2.0000i 1x1 sym显示内容:A1,1A1,2A1,4元胞数组在存放和操作字符串上的应用构架数组 本例通过温室数据(包括温室名、容积、温度、湿度等)演示:单构架的创建和

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

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!