




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、1第第2 2章章 MATLAB语言语言22.1 MATLAB的数据结构与语句结构2.1.1 变量与常量(1)变量的命名:变量的名字必须以字母开头(不能超过19个字符),之后可以是任意字母、数字或下划线;变量名称区分字母的大小写;变量中不能包含有标点符号。(2)一些特殊的变量 ans:用于结果的缺省变量名 i、j:虚数单位(若i和j不被改写)。 也可用i=sqrt(-1)设置 pi:圆周率3 eps:计算机的最小数 nargin:函数的输入变量个数 nargout:函数的输出变量个数 Inf:无穷大+,-可表示为-inf NaN:不定量(0/0或Inf/Inf) realmin:最小可用正实数
2、realmax:最大可用正实数 flops:浮点运算数 lasterr:最新的错误信息 lastwarn:最新的警告信息42.1.2 MATLAB的数据结构矩阵型数据字符串型数据:用单引号括起来多维数组:三维数组可以直接用于彩色数字图像的描述。单元数组:是矩阵的直接扩展,可以存储任意类型的信息。单元变量A的第i行、第j列的内容可以用Ai,j表示。类与对象:用户自定义的复杂变量即类变量,如传递函数类,用一个变量来表示整个传递函数。符号变量:区别于常规的数值型变量,可用于公式推导和数学问题的解析解法。用syms语句声明。52.1.3 MATLAB 的基本语句结构直接赋值语句 赋值变量 = 赋值表达
3、式函数调用语句 返回变量列表 = 函数名(输入变量列表) 其中,函数名对应一个文件(MATLAB路径下)或MATLAB内核中的内在函数,如函数名bode与bode.m文件。 又如:m, p=bode (n, d, w) 调用控制工具箱中的bode( )函数来求传递函数在指定的频段内的幅值响应m和相位响应p。6MATLAB语言中的矩阵表达A=1,2,3;4,5,6;7,8,9A= 1 2 3 4 5 6 7 8 9复数矩阵可用i、j表示复数常量。 B=1+9i,2+8i;4+6j,6+4i;72.1.4 数据存储与读取 save fname A1 A2 Am%若不带后缀则将自动存储为fname.
4、mat文件。若用户想用ASCII码的可读形式存储该文件,则应在命令后加入 /ascii 控制项。数据文件可以用load命令直接读取。如:save ele_num834_2.txt ele_del ele -ASCII82.1.4 MATLAB 语言的基本运算1. 代数运算 加减法运算(参加运算的矩阵维数相同) C=A+B 矩阵转置 B=A 若A矩阵含有复数时,首先对各个元素进行转置,然后再逐项求取其共轭复数值,这种转置方式又称为Hermit转置,其数学记号为B=A*。9 矩阵乘法(A的列数与B的行数相等) C=A*B 矩阵的左除:用运算符号 表示,AB即由Gauss消去法来求得AX=B的解X,
5、亦即 X=A-1B。若A不是方阵,即用最小二乘法求解AX=B的解。 矩阵的右除:用运算符号 / 表示,B/A相当于求XA=B的解,即BA-1,但在计算方法上存在差异,更精确的有(B/A=AB)。10 矩阵的翻转: B=fliplr(A) % bij=ai,n+1-j C=flipud(A) % cij=am+1-i,j D=rot90(A) % dij=aj,n+1-il点运算如: C=A .*B % (cij=aijbij) D=A . 矩阵的乘方运算(矩阵为方阵) Ax112. 逻辑运算 矩阵的与(&):若两个矩阵相应元素均非0,则该结果元素的值为1,否则为0。 或(|) 非():
6、若矩阵相应元素为0,则结果为1,否则为0。 异或(xor):相应的一个数都为0,一个非0,则结果为0,否则为1。3. 比较运算 如 比较A、B矩阵,C=AB 当aijbij时cij=1,否则cij=0。比较符号如下:=表示等于,=表示大于等于,=表示不等于。例12 A=2 1;0 1; B=1 1;1 1; C=A&BC = 1 1 0 1返回 C=A|BC = 1 1 1 1例1例2 C=AC = 0 0 1 0例3 C=xor(A,B)C = 1 1 0 1例4134. 特殊函数 如:find( )函数A=1,2,3;4,5,6;7,8,0;i, j=find(A=5); i, j
7、ans= 3 1 2 2 3 2 2 314A=1,2,3;4,5,6;7,8,0;find(A=5)ans= 3 5 6 8all( )和any()函数k1=all(A=5), k2=any(A=5)%检查每列中的所有元素k1 = 0 0 0k2 = 1 1 1152.2.1 循环结构2.2 MATLAB 基本控制流程结构从向量V取一个值执行循环体遍取V中的值?否While中条件满足执行循环体是(a) For循环结构 (b) while循环结构 图2.1 循环结构的示意图16 for 循环变量=数组范围 命令串 end while 条件表达式 命令串 end思考:分别用两种语句求取 i,i=
8、1,.,100例:for n=1:5 x(n)=n2; end例:s=0; n=1; while n s=0; for i=1:100, s=s+1; end, s s=0; i=1; while (i sum(1:100)求和小于10000的最小N值 s=0; m=0; while (s100) m %当sum大于100时,显示m break; end %中止运算 sum=sum+m; end202.2.3开关结构switch 开关表达式case 表达式1,语句段1case 表达式2,表达式3,表达式m, 语句段2Otherwise,语句段nendNote:开关语句的关键是对开关语句的关键是
9、对“开关表达式开关表达式”值的判断,当开值的判断,当开关表达式的值等于某个关表达式的值等于某个casecase语句后面的条件时,程序转语句后面的条件时,程序转入执行。入执行。 当两个当两个casecase语句中的条件相同时,执行结果与两个语语句中的条件相同时,执行结果与两个语句的顺序有关。句的顺序有关。21function sys,x0,str,ts= han_td(t,x,u,flag,r,h,T)switch flag case 0, sys,x0,str,ts = mdlInitializeSizes(T); case 2, sys = mdlUpdate(x,u,r,h,T); cas
10、e 3, sys = mdlOutputs(x); case 1,4,9 sys = ; % do nothing otherwise, error(unhandled flag = ,num2str(flag);end222.2.4 试探结构 try, 语句段1 catch, 语句段2 end 首先试探性执行语句段1,若执行过程中出错,则将错误信息保留在lasterr变量,并终止这段语句的执行,转而执行语句段2中的语句。23 MATLAB的程序类型有两种,一种是在命令窗口下执行的脚本M文件;第二种是函数(function)文件。1、脚本M文件 把许多可执行的MATLAB命令放在后缀为.m的文
11、件中,只需在命令窗口中输入文件名即可执行多命令。它所用的变量都要在工作空间中获取,不需要输入输出参数的调用,退出MATLAB后就释放了。2.3 MATLAB的M-函数设计242、函数文件 MATLAB除已有的众多函数,如abs()、sqrt(),外还提供了用于创建用户函数的命令function,用以扩充其函数功能。2.3.1 MATLAB语言函数的基本结构 同样以.m格式存取,但文件名必须与函数名相同,函数接受输入参数,然后执行并输出结果,具有标准的基本结构。用help命令可以显示它的注释说明。25(1)函数定义行(关键字function)function out1,out2,.=filena
12、me(in1,in2,.)输入和输出(返回)的参数个数分别由nargin和nargout两个MATLAB保留的变量来给出。(2)函数体说明及有关注解 以(%)开头,用以说明函数的作用及有关内容 notice:函数体内使用的除返回和输入变量这些在function语句中直接引用的变量以外的所有变量都是局部变量,即在该函数返回之后,这些变量会自动在MATLAB的工作空间中清除掉。如果希望这些中间变量成为在整个程序中都起作用的变量,则可以将它们设置为全局变量。26例2.1:用M函数完成 的运算。 function p=ff(x) n=length(x); for i=1:n pp(i)=sqrt(x(
13、i)2+10); end p=pp*2-5; 然后在工作空间定义x: x=1:5 y=ff(x) y=1.6332 2.4833 3.7178 5.1980 6.832251022xp27例2.2:用M函数生成nm阶的Hilbert矩阵,其第i行第j列的元素值为 function A=myhilb(n,m) %myhilb 本函数用来演示函数编写方法 if nargout1, error(too many output arguments); end if nargin=1,m=n; %若给出一个输入,则生成方阵 elseif nargin=0| nargin2 error(wrong num
14、ber of input arguments); end for i=1:n, for j=1:m, A(i,j)=1/(i+j-1); end, end) 1/(1,jihji28 在function命令中,也可以没有输入输出变量。 function 文件名如:function test1 a=function test B=1,2;3,4在工作空间输入文件名:test1结果显示:a= function testB= 1 2 3 4292.3.2 可变输入输出个数的处理例:多个多项式乘积function a=convs (varargin) a=1;for i=1:length(vararg
15、in), a=conv (a, varargini),end其中,varargin 表示输入变量。调用该函数求多项式P、Q、F的乘积。P=1 2 4 0 5; Q=1 2; F=1 2 3; D=convs(P, Q, F)30 MATLAB提供了丰富的绘图功能 help graph2d可得到所有画二维图形的命令 help graph3d可得到所有画三维图形的命令2.4.1 二维图形的绘制1、基本的绘图命令 plot(x1,y1,option1,x2,y2,option2,) %在同一坐标系中画多幅图形,Option见P25表2-1。2.4 MATLAB的图形可视化31 可用grid on在图
16、形上添加网格线,用grid off取消网格线。 hold on:把当前图形保持在屏幕上不变,同时允许在这个坐标内绘制另外一个图形。hold off:使新图覆盖旧的图形如:方程 y=sin(tan x)-tan(sin x), 绘制函数的曲线。x=-pi:0.05:pi; y=sin(tan(x)-tan(sin(x); plot(x,y) ,x32 可用title( )函数在绘制的图形上添加标题。 用xlabel( )和ylabel( )函数给x和y坐标轴添加标注,用gtext( )函数在任意位置添加说明等。 用户可通过set( )函数设置对象的属性,还可以用get( )函数获得对象的某个属性
17、。 set(句柄,属性名1,属性值1,属性名2,属性值2,) V=get(句柄,属性名)332、其他二维图形绘制语句 polar( ) %绘制极坐标曲线 stairs( ) %绘制阶梯型曲线 stem( ) %绘制火柴杆状曲线 bar( ) %绘制直方图 fill( ) %绘制二维填充图 subplot( ) %将图形窗口分成若干块,并绘图3、隐函数绘制应用 ezplot (隐函数表达式,xm,xM,ym,yM)34 如:ezplot(x2*sin(x+y2)+y2)352.4.2 三维图形的绘制1、三维曲线的绘制 plot3(x1,y1,z1,option1,x2,y2,z2,option2
18、,)2、三维曲面绘制 mesh( ) %绘制三维网格型图形 surf( ) %绘制三维曲面 surfc( ) %绘制带有等高线的三维曲面3、三维图形视角设置 view( ) %改变视角36表 MATLAB绘图命令的各种选项曲线线型曲线颜色标记符号选项意义选项意义选项意义选项意义选项意义-实线b蓝色c蓝绿色*星号pentagram五角星-虚线g绿色k黑色.点号o圆圈:点线m红紫色r红色x叉号square-.点划线w白色y黄色vdiamondnone无线hexagram六角星A=1 2 3; 4 5 6; 2 3 5;det(A)ans = -3注:若A为符号矩阵,则为解析解。2.5 MATLAB
19、语言与现代科学运算38 矩阵的迹(trace):该矩阵对角线上各个元素之和。 trace(A) 矩阵的秩(rank) k=rank(A, tol) 其中,tol为机器精度。 矩阵的范数(norm) N=norm(A,选项) norm(A,1); norm(A, inf)39矩阵范数函数的选项表 矩阵的特征多项式 C(s)=det(sI-A) C=poly(A) %求取矩阵特征多项式系数inf12无意义与算法选项2A2A1AA40 多项式及多项式矩阵的求值 求取C=a1x.n+an+1 C=polyval(a,x) B=polyvalm(a,A) 矩阵的特征值 V,D=eig(A) 其中,A为给
20、定矩阵,D为对角阵,其对角线上的元素为A的特征值,而每个特征值对应V中的一列,即特征向量。41 矩阵指数eA expm(A)2、矩阵的分解 矩阵的三角分解(LU分解) L,U=lu(A)%A=LU,L为下三角矩阵 对称阵的 Cholesky 分解 D, P=chol(A) %A=DTD 其中,D为Cholesky分解矩阵,P-1为A矩阵中正定的子矩阵的阶次。42 矩阵的正交基(Q*Q=I) Q=orth(A) 矩阵的奇异值分解 L,A1,M=svd(A) 其中,A1为对角阵,L、M为变换矩阵。 其中,TMLA000),(21rdiag021r433、方程求解问题及 MATLAB 实现 矩阵求逆
21、 C=inv(A) %当A为非奇异方阵 矩阵的广义逆 若M满足如下条件 (1)AMA=A; (2)MAM=M; (3)AM与MA均为对称矩阵,则称M为A的广义逆矩阵。 M=pinv(A)44 线性方程求解 若AX=B,则X=AB; 若XA=B,则X=B/A。 Lyapunov方程求解 AX+XAT= - C X=lyap(A, C) % 其中,C为对称阵。离散系统的Lyapunov标准型为XAXT X + C = 0 则 X=dlyap(A, C) 45 Silvester方程求解 AX + XB= - C X=lyap(A, B, C) Riccati方程求解 ATX + XA XBX +
22、C = 0 X=are(A, B, C) %X为对称阵。离散系统的Riccati方程用dare( )函数求解。46 矩阵问题的解析解syms a b cA=1 1 1;a b c;a2 b2 c2; det(A), B=poly(A)ans =b*c2-c*b2-a*c2+a*b2+a2*c-a2*bB =x3-x2*c2-b*x2+x*b*c2-x*c*b2-x2+x*c2+b*x-b*c2+c*b2-a*x+a*c2-a*b2-a2*c-a2*x+a2*b 47 矩阵问题的解析解syms a b cA=1 1 1;a b c;a2 b2 c2;det(A); factor(ans) %求行
23、列式并进行因式分解B=poly(A); collect(B) %求特征多项式并合并同类项ans =-(-c+b)*(a-c)*(a-b)ans =x3+(-1-c2-b)*x2+(-a2+c2+b*c2-a+b-c*b2)*x-a2*c+c*b2+a2*b+a*c2-b*c2-a*b2482.5.2 常微分方程问题的 MATLAB 求解1、一阶常微分方程组的数值解法 t, x=ode45(方程函数名,tspan, x0, 选项,附加参数) 其中,t为仿真结果的自变量构成的向量,一般采用变步长算法,返回的x是一个矩阵。“方程函数名”为用MATLAB编写的固定格式的M-函数,描述一阶微分方程组,tspan为数值解时的初始和终止时间等信息, x0为初始状态变量,“选项”为求解微分方程的一些控制参数。nixtfxii, 2 , 1),(49例2.2: Lo
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年技术改造项目可行性研究报告
- 2025年信息化公共云服务项目可行性研究报告
- 乌海市中医院老年医学科医保政策考核
- 阳泉市人民医院护理科研风险管理考核
- 鄂尔多斯市中医院护理效益评估考核
- 2025年中国碳酸铈项目创业计划书
- 立项申请报告书格式3
- 中国油漆防污剂项目经营分析报告
- 2025年中国四甲氧甲基甘脲项目创业计划书
- 2025年年产3万吨高吸水性树脂(SAP)项目可行性研究报告
- 企业IT基础实施架构与服务器设备维保项目实施技术方案
- gmp上岗证qc试题及答案
- 生物安全管理体系文件
- 2.1岩石圈的组成及物质循环 课件高中地理鲁教版(2019)选择性必修1
- 戥称的介绍讲解
- 2025年全国海洋知识竞赛题库及答案(共200题)
- 《红星照耀中国》中考题集(含答案解析)
- 应聘妇女主任的简历
- 河北农业大学分子生物学题库(带答案)
- 公共管理学:理论、实践与方法 课件全套 汪大海 第1-18章 公共管理与公共管理学- 公共管理的变革
- 瑞幸咖啡副店长认证考试题库
评论
0/150
提交评论