




已阅读5页,还剩57页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
MATLAB语言复习,复习提纲,MATLAB基本操作 MATLAB数值数组 字符串数组/元胞数组/构架数组 M文件和流程控制 符号计算 数据和函数可视化 Simulink模型 MATLAB编译器 复习题,一、MATLAB基本操作,1.数值的记述: 采用习惯的十进制表示法 可以直接输入复数 a+bi 或 r*exp(i*theta) 2. 变量命名规则 变量名、函数名由英文字母、数字、下划线构成。 变量名、函数名区分字母大小写。A1、a1代表不同含义。 变量名第一个字符必须是英文字母。 变量名不得包含空格、标点,可以包含下划线。,一、MATLAB基本操作(续),3. MATLAB默认的预定义变量 ans 计算结果的缺省变量名 NaN, nan 非数,如 0/0 eps 机器零阀值 Inf, inf 无穷大,如 1/0 i, j 虚单元 i=j=(-1)1/2 pi 圆周率 nargin 函数输入宗量数目 nargout 函数输出宗量数目 varargin 变长度输入宗量 varargout 变长度输出宗量,一、MATLAB基本操作(续),4. 运算符和表达式 a) 表达式由变量名、运算符和函数名组成。 b) 表达式按优先级自左向右运算,括号可改变优先级顺序。 c) 优先级顺序由高到低:指数运算、乘除运算、加减运算。 d) 表达式中赋值符“=”和运算符两侧允许有空格。 “/” 和 “”代表左除(常用除法)和右除运算。 对于数值a, b, c a/(b+c) 表示a(b+c), a(b+c) 表示(b+c)a。 对于矩阵 A/B 表示AB-1,即A*inv(B); BA 表示B-1A,即inv(B)*A。,一、MATLAB基本操作(续),5. 指令窗常用控制指令 cd 设置当前工作目录 clf 清除图形窗 clc 清除指令窗中显示的内容 which 指出文件所在目录 clear 清除内存变量 who/whos 查询内存变量 save/load 存取数据文件(*.mat) edit 打开M文件编辑器 open 打开文件 exit/quit 退出MATLAB dir 列出指定目录的文件清单,一、MATLAB基本操作(续),6. 指令行中常用的标点符号 空格 分隔输入量;分隔数组元素 逗号 , 作为要显示结果的指令的结尾;分隔输入量;分隔数组元素 黑点 . 小数点 分号 ; 作为不显示结果的指令的结尾;分隔数组中的行 冒号 : 用作生成一维数组;用作下标时表示该维上的所有元素 注释号 % 其后内容为注释内容 单引号 其内容为字符串 圆括号 ( ) 用作数组标识;表示函数输入宗量列表时用 方括号 输入数组时用;表示函数输出宗量列表时用 花括号 用作元胞数组标识 下连符 _ 用在变量、函数和文件名中 续行号 将长指令行分成两行输入,保持两行的逻辑连续。,二、MATLAB数值数组,1. 数组的创建和寻访 1) 整个输入数组必须用方括号对“ ”框起来。 2) 利用 x = a : inc : b 生成均匀分布的一维数组,步长inc 默认值为1。必须符合递增或递减规律。 例如:t=0:0.1:5; x=5:-1:0; s=0:0.1:-2(错误) 3) 数组的行与行之间用分号“;”或回车分隔;一行内的数组元素用逗号“,”或空格“ ”分隔。 3) 子数组寻访取决于 x ( index )中的下标index,下标可以是全下标或单下标。注意单下标的排列顺序。 4) 下标 index 可以是数值数组,但是 index 的元素取值必须在 1 , end 的范围内。end 为最大下标。,二、MATLAB数值数组(续),5) 注意被赋值的子数组长度与送入的数组长度一致。 6) “逻辑数组”:由逻辑或关系运算得到,元素值为1或0,代表逻辑或关系运算结果的真假。,二、MATLAB数值数组(续),举例: 寻址: A(r,c), A(r,:), A(:,c), A(:), A(s) A(L) A(r,c)=Sa, A(:)=D(:), A(s)=Sa 假设 A=2:7; 区分: L=A5 L=1 1 1 0 0 0 返回值为逻辑数组 L=find(A5) L=1 2 3 返回值为满足条件的元素的下标 S=A(A5) S=2 3 4 返回值为数组的元素 或 S=A(find(A5),二、MATLAB数值数组(续),2. 数组的类型、大小、维数 class, ndims, size, length 3. 数组运算和矩阵运算 数组运算则是对数组中的每个元素进行同样的运算,参加运算的几个数组必须同维。 矩阵运算按照矩阵运算的规则对参加计算的矩阵和计算结果有相应的要求 关系、逻辑运算只适用于数组运算 例如:A.*B和A*B;A/B和A./B;A.n和An。,二、MATLAB数值数组(续),4. 多项式的表达方法 以多项式的系数构成的行向量来表示多项式,多项式系数按照降幂顺序输入,如果有缺项,该项系数为零。 P(x)=anxn+an-1xn-1+a1x+a0 Pan an-1 a1 a0 得到方阵的特征多项式:p=poly(A) 根据多项式的根向量构造多项式:p=poly(R) 打印多项式:poly2str(p,x),二、MATLAB数值数组(续),5. 标准数组生成函数 zeros 产生全0数组 ones 产生全1数组 eye 产生单位数组 diag 产生对角型数组 magic 产生魔方数组 rand 产生均匀分布随机数组 randn 产生正态分布随机数组,二、MATLAB数值数组(续),6. 常用数组操作函数 reshape, cat, repmat, diag A = reshape (-2:6 , 3 , 3) C = repmat (B, 1, 3) B, B, B cat ( 1 , A , B) A ; B,二、MATLAB数值数组(续),7. 高维数组 低维数组的函数,例如 reshape, cat, repmat, diag或 ones, zeros, eye, 或 length, size, ndims等指令都适用于高维数组。,二、MATLAB数值数组(续),8. “非数”和“空”数组 1) NaN 或 nan 表示非数,例如: 0/0,/,0 2) Inf 或 inf 表示无穷大,例如: 5/0,exp(1000) 。 3) 某一维长度为 0,或若干维长度为 0 的数组称为“空数组”。例如: A= , B=ones(2,0) , C=zeros(0,2) 4) “非数”具有传递性,没有大小概念,不能进行比较。 5) “空数组”不具有传递性, 全零数组,不存在。 6) 判断指令isnan, isempty。,二、MATLAB数值数组(续),9. 关系操作和逻辑操作 任何非0数字都看作“逻辑真”,只有0看作“逻辑假”。 关系和逻辑运算的计算结果是一个由0和1组成的逻辑数组。 逻辑数组是具有真假判断的作用的数值数组。 小于( ),等于( = ),不等于( = ) 与( & ),或( | ),非( ),三、字符串数组/元胞数组/构架数组,1. 字符串数组 1) 必须将待建字符放在“英文单引号对”中。 2) 字符串可以包含中英文字符、空格、标点、数字等,都占一个元素位。 3) 当字符串中包含单引号时,用连续两个单引号表示。 4) 直接输入多行串数组时必须保证各行等长。 5) char , str2mat , strvcat创建多行串数组,不需要考虑各行长度,自动按最长行设置。 6) 常用的串转换函数: abs, char, double, int2str , num2str , mat2str。例如:abs(a),double(b),int2str(3.1415), num2str(3.1415) 7) 判断指令ischar,isletter 。,三、字符串数组/元胞数组/构架数组(续),2. 元胞数组 1) 基本组成部分为“元胞”。 2) 元胞可以是任何类型、任意大小的数组(例如:数值数组、字符串数组、符号对象等)。 3) 圆括号对“( )”和花括号对“ ”的不同作用。 A( 2,3 ):表示元胞数组A第 2 行第 3 列的元胞。 A 2,3 :表示元胞数组A第 2 行第 3 列的元胞中的内容。,三、字符串数组/元胞数组/构架数组(续),3. 构架数组 1) 基本组成部分是“构架”。 2) 构架必须划分成“域”。构架不能直接存放数据,数据必须存放在构架下面的“域”中。 3) 构架的域可以存放任意类型、任意大小的数组(数值数组、字符串数组、符号对象、元胞等)。 4) 不同构架的同名域中可以存放不同类型的内容。 5) 对构架数组增加或减少一个域会影响构架数组内所有的构架。对某一个构架的域增加或减少一个子域不会影响构架数组内的其它构架。,四、M文件和流程控制,1. MATLAB控制流函数 1)循环控制语句 for, while end必须和for, while 成对出现,不可省略。 for x=array ( commands ) end while expression ( commands ) end,四、M文件和流程控制(续),2)条件控制语句 if, switch if expression1 ( commands1 ) elseif expression2 ( commands2 ) else ( commandsk ) end,四、M文件和流程控制(续),2)条件控制语句 switch ex case test1 ( commands1 ) case testn ( commandsn ) otherwise ( commands ) end,注意:end配对的问题 switch 语句中,ex 的值可以是一个标量或字符串,test1、test2、可以是一个标量、字符串、元胞数组。当test是元胞数组时,判断ex的值是否与元胞数组中的一个值相符,来决定是否执行后面的command语句。,四、M文件和流程控制(续),3) try - catch结构 try ( commands1 ) catch ( commands2 ) end,四、M文件和流程控制(续),2. M脚本文件和函数文件 1) M脚本文件是一连串MATLAB命令的组合。 2) M函数文件可以通过传给它不同的输入参数,得到相应的输出参数。 3) 函数文件第一行必须声明该文件为函数文件,具体形式为:function + 输出宗量 + “=” + 函数名 +(输入宗量)。,四、M文件和流程控制(续),4) 函数名尽量与文件名一致,如果不一致,调用该函数时应使用文件名。 5) 输入输出宗量个数:nargin, nargout。 6) “变长度”输入输出宗量:varargin, varargout。,四、M文件和流程控制(续),7) 函数声明行中,“变长度”输入输出宗量必须在“普通”输入输出宗量之后。 8) varargin, varargout是元胞数组(varargin1)。 例如: i, j, varargout = example( x1, y1, m, varargin ),四、M文件和流程控制(续),3. 子函数和私有函数 1) 一个M函数文件可以包含多个函数,每个函数都以函数声明行来进行声明。 2) 第一个出现的函数称为主函数,其它函数称为子函数。 3) 通过函数文件名调用函数时,调用的是主函数。主函数的函数名应该与文件名相同, 4) 子函数只能被同一文件内的主函数或子函数调用。 私有函数位于private子目录,只能被private的直接父目录中的M文件调用。,四、M文件和流程控制(续),4. eval 和 feval 指令 1) eval 所执行的字符串应该包括函数名、输入参数,甚至输出参数。 2) feval 的 FUN 字符串仅为函数名,输入参数由 arg1, arg2 给出。 eval( s = sin(pi) ) s = eval( sin(pi) ) s = feval( sin, pi ),五、符号计算,1) 定义基本符号对象 f = sym ( arg ) %arg可以是字符串、数值 syms arg1 arg2 argk %注意空格分隔不同对象 2) 符号表达式基本指令 simple( Expr ) %化简Expr表达式 collect( Expr,v ) %合并v的同幂项,默认x R2=subs( R1, old, new ) %通用置换指令,将R1中的old替换成new,五、符号计算(续),3) 常用符号计算指令 dfdvn = diff( f, v, n ) %符号表达式 f 对 v 求 n 阶导数 intf = int( f, v, a, b ) %符号表达式 f 对 v 求定积分 S=dsolve( a1, a2, ) 符号微分方程求解 例如:S=dsolve(Dx=y, Dy=-x, x(0)=-0.5,y(0)=0.5,s),六、数据和函数可视化,1. 二维绘图的基本指令 plot:最基本的二维绘图指令 stem:离散杆图 subplot:划分子图的命令 例如:subplot(2,2,3) 2. 图形注释 title:图名 xlabel:X坐标 ylabel:Y坐标 legend:图例 text:文本,六、数据和函数可视化(续),3. 一元函数绘图指令 ezplot 4. 基本图形控制指令 axis on/off %是否显示轴背景 grid on/off %是否显示网格线 box on/off %是否显示封闭坐标轴 figure %打开一个空白图形窗,七、Simulink模型,信源( source ) + 系统( system ) + 信宿( sinks ) 信源: 信宿:,sim( model01.mdl )可以在命令窗口中运行仿真模型。,八、MATLAB编译器,1) mex filename.c:将C源码编译生成MEX文件(*.dll) 2) mbuild filename.c:将C源码编译生成可独立执行文件(*.exe) 3) mcc ? filename.m:将M函数文件编译生成MEX文件(*.dll)或可执行文件(*.exe),由参数进行控制。,八、MATLAB编译器(续),C源码文件必须有的两个部分: #include “mex.h“ 入口子程序:void mexFunction( int nlhs, mxArray *plhs, int nrhs, const mxArray *prhs ) /*用来完成MATLAB与功能子程序之间的通信任务*/ ,复习题,一、在下列语句的下方写出该语句运行结果 1. clear 2. clc 3. clf 4. help conv 5. axis on 6. diary on 7. a1=eye(3); 8. b=reshape(1:9,3,3) 9. c=5/0 10. d=0/0,清除内存变量 清除命令窗口中的内容 清除图形窗 给出conv的帮助信息 显示轴背景 进行日志记录 生成3*3的单位数组 b = 1 4 7 2 5 8 3 6 9 c=inf d=nan,复习题(续),二、利用语句实现下面的操作 1. 照同样格式输入字符串赋给变量s。 Usually, the word SOS is for emergency. s=Usally, the word SOS is for emergency.,复习题(续),2. 定义符号表达式:y=sin(t)e-0.1t sym(y=sin(t)*exp(-0.1*t) y=sym(sin(t)*exp(-0.1*t) 注意: 符号计算不使用.* ./等运算符,符号计算 自动使用数组运算规则进行运算。,复习题(续),3. 求微分方程的解: y=dsolve(D2y=0.5*exp(-0.1*t),复习题(续),4.得到大写字母 Z 的ASCII码 abs(Z) double(Z) 5. 得到数组A的大小 size(A) 6. 构造元胞数组C C = line1 1 line2 2 C=line1 1;line2 2,复习题(续),7.已知t,y,做曲线y(t),要求红色虚线做图。 plot(t,y,r-) 8.将字符串s作为MATLAB命令行执行。 eval(s) 9.在MATLAB命令窗口运行Simulink模型文件 sim1.mdl。 sim(sim1.mdl) 10. 在2*2个子图中,选择3号子图准备绘图。 subplot(2,2,3),复习题(续),三、编写程序完成下面要求的操作 1. 已知:A B2,求AB A=1 2 -1;0 5 3; B=2 S1=A+B,复习题(续),求:X,A=1 0 -1;2 1 3;1 -1 2; b=2;3;1; X=Ab %x1,x2,x3=solve(x1-x3=2,2*x1+x2+3*x3=3,x1-x2+2*x3=1,x1,x2,x3),复习题(续),3.以同样格式打印多项式 Pnum=1 1; Pden=1 0 2 3; disp(poly2str(Pnum,t); disp(-) disp(poly2str(Pden,t); %printsys(Pnum,Pden,t);,复习题(续),4. 求系统的阶跃响应,系统传递函数为 H(s) num=1 1; den=1 2 2; step(num,den); % fuxi04.mdl,复习题(续),5. 求100个数字的和(1100)。 Sum=0; for n=1:100 Sum=Sum+n; end Sum %n=1:100; %Sum=sum(n),复习题(续),6. 已知字符串 g6yui78G85fj4jt8RHjsdj744UjdfO5,请找出该字符串中所有的数字,并保存成数值数组Digital。 s=g6yui78G85fj4jt8RHjsdj744UjdfO5; index=find(s=0 end Digital %Digital=double(s(index)-48,复习题(续),7. 以构架数组表示3个人的基本信息,构架数组的每一个构架表示一个人的信息。三个人的基本信息如下:,复习题(续),S(1).Name=ZhangYuan; S(1).Age=20; S(1).Telephone=87541234; S(2).Name=XuFang; S(2).Age=21; S(2).Telephone=87544321; S(3).Name=ChenChen; S(3).Age=20; S(3).Telephone=87541111;,复习题(续),% Name=ZhangYuan;XuFang; % ChenChen; % Age=20;21;20; % Telephone=87541234;87544321; % 87541111; % S=struct(Name,Name, % Age,Age, % Telephone,Telephone),复习题(续),8. 编写函数文件,对输入参数x,判断x为正数、负数或等于零,对应三种判断,函数分别返回1、1、0三个数值。 解答见下页:,复习题(续),function m=sign(x) % SIGN Signum function. % For each element of X, SIGN(X) returns 1 if the element % is greater than zero, 0 if it equals zero and -1 if it is % less than zero. % 2003.12.20 if x0 m=-1; else if x=0 m =0; else m=1; end,复习题(续),9. 利用MATLAB编程语句绘制图形。图中曲线为正弦曲线的上半部分。 t=0:0.1:3*pi; y=sin(t); i=find(y2*pi).*y; plot(t,y),复习题(续),10. 已知连续信号卷积的计算式 求下面两个信号的卷积。,复习题(续),syms t tao positive; ut=exp(-2*t); ht=sin(t); uh=subs(ut,t,tao)*subs(ht,t,t-tao) yt=int(uh,tao,0,t) yt=simple(yt) ezplot(yt,0,10),复习题(续),%离散数值法0,10内不存在截尾误差 clear T=0.02; tu=0:T:10; th=0:T:10; ut=exp(-2*tu); ht=sin(th); ty=0:T:(10+10); yt=T*conv(ut,ht); plot(tu,ut,g) hold on plot(th,ht,k) plot(ty,yt,b) hold off,%LAPLACE变换 syms t positive; Us=laplace(exp(-2*t) Hs=laplace(sin(t) Ys=Us*Hs yt=simple(ilaplace(Us*Hs) ezplot(yt,0,10),复习题(续),四、找出下面的程序中的错误 1. 程序一
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 《血液中血红蛋白的作用与调控》课件
- 2025年四川省国有产权转让合同
- 宾馆消防协议书完整
- 餐饮库房领料管理制度
- 合作运营协议书范本
- 集团项目管理制度框架
- 中考奖励协议书普通
- 果木定植协议书范本
- 集体供餐管理制度
- 私下和解协议书模板
- 《化工腐蚀与防护》课程标准(煤化工技术)
- 2024中国华电集团限公司校招+社招高频考题难、易错点模拟试题(共500题)附带答案详解
- 土方平衡工程施工方案样本
- 消防安全知识掌上手册APP开发指南
- 培养孩子的人际交往能力
- 高三二诊考试分析报告
- 2024年ISO14001体系目标、指标和管理方案一览表
- DB37-T 4693.1-2024人民防空工程防护设备安装技术规程 第1部分:人防门-地方标准
- 基于六轴工业机器人的焊接工作站设计-毕业论文
- 安全绳培训课件
- 户型与结构布置研究报告
评论
0/150
提交评论