1、MATLAB语言及其应用教案可编辑修改word版MATLAB 语言及其应用教案任课教师:罗靖宇任课班级:09 通信(1)(2)教材:MATLAB 程序设计与应用(第二版)作 者:刘卫国主编 出版社:高等教育出版社内容:书籍简介:本书以 MATLAB 7.0 版为蓝本介绍 MATLAB功能与应用 强调理论和实践相结合 贴近读者需要 注重讲清有关数学方法和算法原理前提下 介绍 MATLAB功能;注重和有关学科领域 结合,突出应用 书中有许多应用实例些实例既是对 MATLAB 重点和难点诠释 又可以更好地帮助读者应用 MATLAB 来解决实际问题 具有很强代表性。全书分为基础篇 应用篇和实验篇 基础
2、篇包括 MATLAB 系统环境 MATLAB 数据及其运算 MATLAB 矩阵分析与处理 MATLAB 程序设计 MATLAB 图 MATLAB 数值计算 MATLAB 符号计算 应用篇包括 MATLAB 图形用户界面设计 MATLAB Notebook使用 MATLAB Simulink 仿真软件 MATLAB 外部程序接口技术 MATLAB应用 实验篇和教学内容相配合包括 15实验 以帮助读者更好地上机操作。本书可作为高等学校理工科各专业大学生或研究生学习教材 也可供广大科技工作者参考。第 1 章 MATLAB 系统环境1.1MATLAB 概貌1.1.1MATLAB 发展1.1.2MATL
3、AB 主要功能1.1.3MATLAB 功能演示1.2MATLAB 环境 准备1.2.1MATLAB 安装1.2.2MATLAB 启动与退出1.3MATLAB 操作界面1.3.1主窗口1.3.2命令窗口1.3.3工作空间窗口1.3.4当前目录窗口和搜索路径1.3.5命令历史记录窗口1.3.6Stalt 菜单1.4MATLAB 帮助系统1.4.1帮助命令1.4.2帮助窗口1.4.3演示系统第 2 章 MATLAB 数据及其运算2.1MATLAB 数据 特点2.2变量及其操作2.2.1变量与赋值2.2.2变量 管理2.2.3数据 输出格式2.3MATLAB 矩阵 表示2.3.1矩阵 建立2.3.2冒
4、号表达式2.3.3矩阵 拆分2.4MATLAB 数据 运算2.4.1算术运算2.4.2关系运算2.4.3逻辑运算2.5字符串2.6结构数据和单元数据2.6.1结构数据2.6.2单元数据第 3 章 MATLAB 矩阵分析与处理3.1特殊矩阵3.1.1通用 特殊矩阵3.1.2用 专门学科 特殊矩阵3.2矩阵结构变换3.2.1对角阵与三角阵3.2.2矩阵 转置与旋转3.3矩阵求逆与线性方程组求解3.3.1矩阵 逆与伪逆3.3.2用矩阵求逆方法求解线性方程组3.4矩阵求值3.4.1方阵 行列式值3.4.2矩阵 秩与迹3.4.3向量和矩阵 范数3.4.4矩阵 条件数3.5矩阵 特征值与特征向量3.6矩阵
5、 超越函数第 4 章 MATLAB 程序设计4.1M 文件4.1.1M 文件 分类4.1.2M 文件 建立与打开4.2程序控制结构顺序结构、选择结构、循环结构4.3函数文件4.4程序调试第 5 章 MATLAB 绘 图5.1二维图形5.2三维图形5.3三维图形的精细处理5.4隐函数绘图5.5底层绘图操作5.6光照与材质5.7图像显示与动画第 6 章 MATLAB 数值计算6.1数据处理与多项式计算6.2数值微积分6.3离散傅里叶变换6.4线性方程组求解6.5非线性方程与最优化问题求解6.6常微分方程的数值求解6.7稀疏矩阵第 7 章 MATLAB 符号计算7.1符号计算基础7.2符号函数及其应
6、用7.3符号积分7.4级数7.5符号方程求解应用篇第 8 章 MATLAB 图形用户界面设计8.1菜单设计8.2对话框设计8.3可视化图形用户界面设计第 9 章 MATLABNotebook 使用9.1NOTEBook 的安装于启动9.2单元的定义与执行9.3输出格式控制第 10 章 MATLABSimlllink 仿真软件10.1Simlllink 操作基础10.2系统仿真模型10.3系统的仿真10.4使用命令操作对系统进行仿真10.5子系统及其封装技术10.6S 函数的设计与应用第 11 章 MATLAB 外部程序接口技术11.1MATLAB 的数据接口11.2MATLAB 编译器11.3
7、MATLAB 计算引擎11.4MEX 动态链接函数接口第 12 章 MATLAB 应用12.1MATLAB 在电路分析中的应用12.2MATLAB 在控制系统分析中的应用12.3MATLAB 在数学建模中的应用12.4MATLAB 在力学及工程结构分析中的应用12.5MATLAB 在优化设计中的应用实验篇实验要求实验 MATLAB 运算基础实验二 MATLAB 矩阵分析与处理实验三 选择结构程序设计实验四 循环结构程序设计实验五 函数文件实验六 高层绘图操作实验七 低层绘图操作实验八 数据处理与多项式计算实验九 数值微积分与方程数值求解实验十 符号计算基础与符号微积分实验十 级数与方程符号求解
8、实验十二 菜单与对话框设计实验十三 Simulink 应用实验十四 外部程序接口实验十五 综合实验第 1 章 MATLAB 系统环境本章重点:发展、功能、操作界面、帮助课时安排:2 课时内容安排:1、概述:MATLAB 发展、MATLAB 主要功能(1)发展MATLAB 名字由 MATrix 和 LABoratory 两词的前三个字母组合而成。那是 20 世纪七十年代后期的事:时任美国新墨西哥大学计算机科学系主任的 Cleve Moler 教授出于减轻学生编程负担的动机,为学生设计了一组调用 LINPACK 和 EISPACK 库程序的“通俗易用”的接口,此即用 FORTRAN 编写的萌芽状态
9、的 MATLAB。经几年的校际流传,在Little 的推动下,由Little、Moler、Steve Bangert 合作,于1984 年成立了MathWorks 公司,并把 MATLAB 正式推向市场。从这时起,MATLAB 的内核采用 C 语言编写,而且除原有的数值计算能力外,还新增了数据图视功能。MATLAB 以商品形式出现后,仅短短几年,就以其良好的开放性和运行的可靠性,使原先控制领域里的封闭式软件包(如英国的 UMIST,瑞典的 LUND 和 SIMNON,德国的 KEDDC)纷纷淘汰,而改以MATLAB 为平台加以重建。在时间进入 20 世纪九十年代的时候,MATLAB 已经成为国
10、际控制界公认的标准计算软件。到九十年代初期,在国际上 30 几个数学类科技应用软件中,MATLAB 在数值计算方面独占鳌头,而Mathematica 和 Maple 则分居符号计算软件的前两名。Mathcad 因其提供计算、图形、文字处理的统一环境而深受中学生欢迎。MathWorks 公司于 1993 年推出 MATLAB4.0 版本,从此告别 DOS 版。4.x 版在继承和发展其原有的数值计算和图形可视能力的同时,出现了以下几个重要变化:(1)推出了 SIMULINK。这是一个交互式操作的动态系统建模、仿真、分析集成环境。它的出现使人们有可能考虑许多以前不得不做简化假设的非线性因素、随机因素
11、,从而大大提高了人们对非线性、随机动态系统的认知能力。(2)开发了与外部进行直接数据交换的组件,打通了 MATLAB 进行实时数据分析、处理和硬件开发的道路。(3)推出了符号计算工具包。1993 年 MathWorks 公司从加拿大滑铁卢大学购得 Maple 的使用权,以 Maple 为“引擎”开发了Symbolic Math Toolbox 1.0。MathWorks 公司此举加快结束了国际上数值计算、符号计算孰优孰劣的长期争论,促成了两种计算的互补发展新时代。(4)构作了 Notebook 。MathWorks 公司瞄准应用范围最广的Word ,运用 DDE 和 OLE,实现了 MATLA
12、B 与 Word 的无缝连接,从而为专业科技工作者创造了融科学计算、图形可视、文字处理于一体的高水准环境。1997 年仲春,MATLAB5.0 版问世,紧接着是 5.1、5.2,以及和 1999 年春的 5.3 版。与 4.x 相比,现今的 MATLAB 拥有更丰富的数据类型和结构、更友善的面向对象、更加快速精良的图形可视、更广博的数学和数据分析资源、更多的应用开发工具。(关于 MATLAB5.x 的特点下节将作更详细的介绍。)诚然,到 1999 年底,Mathematica 也已经升到 4.0 版,它特别加强了以前欠缺的大规模数据处理能力。Mathcad 也赶在 2000 年到来之前推出了
13、Mathcad 2000 ,它购买了 Maple 内核和库的部分使用权,打通了与 MATLAB 的接口,从而把其数学计算能力提高到专业层次。但是,就影响而言,至今仍然没有一个别的计算软件可与 MATLAB 匹敌。在欧美大学里,诸如应用代数、数理统计、自动控制、数字信号处理、模拟与数字通信、时间序列分析、动态系统仿真等课程的教科书都把 MATLAB 作为内容。这几乎成了九十年代教科书与旧版书籍的区别性标志。在那里,MATLAB 是攻读学位的大学生、硕士生、博士生必须掌握的基本工具。在国际学术界,MATLAB 已经被确认为准确、可靠的科学计算标准软件。在许多国际一流学术刊物上,(尤其是信息科学刊物
14、),都可以看到 MATLAB 的应用。在设计研究单位和工业部门,MATLAB 被认作进行高效研究、开发的首选软件工具。如美国 National Instruments 公司信号测量、分析软件 LabVIEW,Cadence 公司信号和通信分析设计软件 SPW 等,或者直接建筑在 MATLAB 之上,或者以 MATLAB 为主要支撑。又如 HP 公司的 VXI 硬件,TM 公司的 DSP,Gage 公司的各种硬卡、仪器等都接受 MATLAB 的支持。(2)主要功能:计算、图形、程序、工具2、MATLAB 环境:准备、MATLAB 安装、MATLAB 启动与退出虚拟光驱3 种启动方式:菜单方式、到
15、安装路劲下双击 MATLAB.exe 运行方式、桌面快捷方式、3 种退出方式:菜单、关闭窗口、命令 quit 或 exit3、MATLAB 操作界面:主窗口、命令窗口、工作空间窗口、当前目录窗口和搜索路径、命令历史记录窗口、Start 菜单4、MATLAB 帮助系统:帮助命令 help、lookfor 命令、帮助窗口、演示系统5、MATLAB 功能演示例 1-1 绘制正弦曲线和余弦曲线。x=0:0.5:360*pi/180;plot(x,sin(x),x,cos(x);例 1-2 求方程 3x4+7x3 +9x2-23=0 的全部根。p=3,7,9,0,-23; %建立多项式系数向量x=roo
16、ts(p) %求根例 1-3 求积分1x ln(1 + x)dx0quad(x.*log(1+x),0,1)例1-4 求解线性方程组。2x1 - 3x2 + x3 = 48x1 + 3x2 + 2x3 = 2 即 : aX = b45x + x - 9x = 17 1 2 3a=2,-3,1;8,3,2;45,1,-9; b=4;2;17;x=inv(a)*b第 2 章 MATLAB 数据及其运算本章重点:变量、格式、矩阵、运算、字符串课时安排:4 课时内容安排:1、MATLAB 数据的特点(1)矩阵是 MATLAB 最基本、最重要的数据对象。1例如: 3 5 7 3 4 (2)向量可以看成是
17、仅有一行或一列的矩阵。例如:1 2 3,28 3 9(3)单个数据(标量)可以看成是矩阵的特例。单个数据看着也看着矩阵。例如:10=10 (4)数据类型MATLAB 定义了 15 种数据类型:Char,float,double,int8,int16,int32,int64,uint8,uint16,uint32,uint64,cell,structure,java 类,函数句柄,用户定义类型一般情况下,矩阵的每个元素必须具有相同的数据类型,在实际应用中,有时需要将不同类型的数据构成矩阵的元素,也就是结构体(Structure)和元胞(Cell)数据类型。 LIYANG 22 M LIYANG
18、22 M WANG 31 W , W TANG 18 M WANG 31 TANG 18 M 2、变量及其操作2.1变量命名:以字母开头(不是数字、汉字开头)后接字母、数字、下划线的最多 63 个字符,区分大小写。2.2变量赋值操作(1)变量=表达式例如:a=123;b=ok(2)表达式;%把表达式值赋值给预定义变量 ans例如:123456例如:将 写成 MATLAB 表达式log(5)e0.3 + ln(5 + cos(3)将123 tg(20)写成 MATLAB 表达式(3)预定义变量:ans,eps,pi,i,j,inf,Inf,NaN,nan,nargin,nargout,realm
19、ax,realmin,lasterr,lastwarn例如:2+6i,3+pi(4)变量管理:内存变量的显示与删除,who,whos,clear.(5)工作空间浏览器(6)变量编辑器:(7)内存变量文件:save 文件名 变量名表 -append-ascii load 文件名 变量名表 -ascii2.3数据输出格式:采用十进制数表示一个常数,可用日常记数法和科学记数法,format format shortformat long format short e format long e format rat format hex format compact format loose3、MA
20、TLAB 矩阵表示矩阵:nm 的数据存储空间向量:单行或单列的矩阵 标量:11 的矩阵数组:矩阵是数组的特例,矩阵是二维数组,向量是一维数组。空矩阵:表示无任何元素3.1矩阵建立1.直接输入法矩阵元素应用方括号()括住每行内的元素间用逗号(,)或空格隔开行与行之间用分号(;)或回车键隔开;元素可以是数值或表达式。例如:a=2,3;5,6;8,9 cB=4,2+3i;5i,6i xp=2 3;4 5复数矩阵2.利用 M 文件建立矩阵(1)启动有关编辑程序或 MATLAB 文本编辑器,并输入待建矩阵. (2)把输入的内容以纯文本方式存盘(设文件名为 mymatrix.m)。(3) load 文件名
21、,就会自动建立一个名为 MYMAT 的矩阵,可供以后使用。3.建立大矩阵大矩阵可由方括号中的小矩阵建立起来。例如A=1 2 3;4 5 6;7 8 9; C=A,eye(size(A);ones(size(A),A4.冒号表达式:(1)使用冒号表达式生成向量冒号表达式的一般格式:e1:e2:e3其中 e1 为初始值, e2 为步长, e3 为终止值。冒号表达式可产生一个由 e1 开始到 e3结束,以步长 e2 自增的行向量。在冒号表达式中如果省略 e2 不写,则步长为 1。当 e2 省略或 e20,e1e3; e20, e1e3 都为空矩阵。(2)使用 linspace 和 logspace
22、函数生成向量linspace(a,b,n)%生成线性等分向量logspace(a,b,n) %生成对数等分向量说明:a、b、n 三个参数分别表示开始值、结束值和元素个数;linspace 函数生成从a 到b 之间线性分布的n 个元素的行向量,n 如果省略则默认值为100; linspace(a,b,n)与 a:(b-a)/(n-1):b 等价。logspace 函数生成从 10a 到 10b 之间按对数等分的 n 个元素的行向量,n 如果省略则默认值为 50。3.2矩阵的拆分:1.矩阵元素访问MATLAB 允许用户对一个矩阵的单个元素进行赋值和操作。而不影响其它元素的值。例如A=ones(4)
23、;A(3,2)=200只改变该元素的值,而不影响其他元素的值。如果给出的行下标或列下标大于原来矩阵的行数和列数,则 MATLAB 将自动扩展原来的矩阵,并将扩展后未赋值得矩阵元素置为 0 A(4,6)=10也可以采用矩阵元素的序号来引用矩阵元素。矩阵元素按列编号,先第一列,再第二列,依次类推。A(6)显然,下标(subscrip)与序号(index)是一一对应的。以 mn 矩阵 A 为例,矩阵元素 A(i,j) 的序号为 (j-1)*m+i。其相互转换关系也可利用 sub2ind 和 ind2sub 函数求得sub2ind(size(A),2,3)c,d=ind2sub(size(A),6)2
24、.利用冒号获得子矩阵A(:,j)表示取 A 矩阵的第 j 列全部元素;A(i,:)表示 A 矩阵第 i 行的全部元素;A(i,j)表示取 A矩阵第 i 行、第 j 列的元素。A(i:i+m,:)表示取 A 矩阵第 ii+m 行的全部元素;A(:,k:k+m)表示取 A 矩阵第 kk+m 列的全部元素,A(i:i+m,k:k+m)表示取 A 矩阵第 ii+m 行内,并在第 kk+m 列中的所有元素。 A=1,2,3,4,5;11,12,13,14,15;21,22,23,24,25;31,32,33,34,35;A(2:3,4:5)A(2:3,1:2:5)此外,还可利用一般向量和 end 运算符
25、等来表示矩阵下标,从而获得子矩阵。end 表示某一维的末尾元素下标。A=1,2,3,4,5;11,12,13,14,15;21,22,23,24,25;31,32,33,34,35;A(end,:)%取 A 最后一行元素A(1,4,3:end)%取 A 第 1、4 行中第 3 列到最后一列元素3.利用空矩阵删除矩阵元素在 MATLAB 中,定义为空矩阵。给变量 X 赋空矩阵的语句为 X=。注意:X=与 clear X 不同,clear 是将 X 从工作空间中删除,而空矩阵则存在于工作空间, 只是维数为 0。将某些元素从矩阵中删除,采用将其置为空矩阵的方法就是一种有效的方法。A=1,2,3,4,
26、5;11,12,13,14,15;21,22,23,24,25;31,32,33,34,35;A(:,2,4)=%删除 A 的第 2 列和第 4 列元素4 矩阵合并矩阵的合并就是把两个以上的矩阵连接起来得到一个新矩阵,“”符号可以作为矩阵合并操作符,命令格式如下:c=a b %将矩阵 a 和 b 水平方向合并为 c c=a;b %将矩阵 a 和 b 垂直方向合并为 c5、MATLAB 数据运算:算术运算:+,-,*,/,点运算:.*,./,.,MATLAB 常用函数:sin,asin,cos,acos,tan,atan,sqrt,log,abs,rem,exp,mod,round,gcd,fi
27、x 关系运算(返回真 1 或假 0):,=,=,!=逻辑运算((返回真 1 或假 0)):&,|,位运算:bitand,bitor,bitxor,bitshift关系与逻辑运算函数:all,any,exit,find,isempty,issparse,xor6、字符串:创建:s=please字符串函数:setstr,mat2str,int2str,num2str,str2num,strcat,strcmp7、结构数据和单元数据:结构数据:建立、引用、修改、结构函数单元(cell)数据:建立、引用、函数第 3 章 MATLAB 矩阵分析与处理本章重点:特殊矩阵、矩阵变换、矩阵求值课时安排:4 课
28、时内容安排:1.特殊矩阵的建立1.1通用特殊矩阵:zeros,ones,eye,rand,randn 几个产生特殊矩阵的函数:zeros 产生全 0 矩阵(零矩阵) ones 产生全 1 矩阵 (么矩阵) eye 产生单位矩阵rand 产生 01 间均匀分布的随机矩阵randn 产生 01 间正态分布的随机矩阵这几个函数的调用格式相似,下面以产生零矩阵的 zeros 函数为例进行说明。其调用格式是:zeros(m) 产生 mm 零矩阵zeros(m,n) 产生 mn 零矩阵。zeros(size(A) 产生与矩阵 A 同样大小的零矩阵相关的函数有:size(A) 返回包含 2 个元素的向量,分
29、别是 A 的行数、列数length(A) 给出行数和列数中的较大者,即length(A)=max(size(A); ndims(A) 给出 A 的维数。reshape(A,m,n) 它在矩阵总元素保持不变的前提下,将矩阵 A 重新排成 mn 的二维矩阵。例 2.3 分别建立 33、32 和与矩阵 A 同样大小的零矩阵。(1)建立一个 33 零矩阵:zeros(3)(2)建立一个 32 零矩阵:zeros(3,2)(3)建立与矩阵 A 同样大小零矩阵:zeros(size(A)(4)将矩阵 xv 重新排成 25、52 矩阵xv=23,34,65,67,54,38,78,76,32,56;ym=r
30、eshape(xv,2,5) newym=reshape(xv,5,2)1.2专门学科特殊矩阵:magic,vander,hilb,toeplitz,compan,pascalmagic 矩阵的每行、每列、及两条对角线的元素之和都相等。用法:magic(n)vander 矩阵的最后一列全为 1,倒数第二列为一个指定的向量,其他各列是其后列与倒数第二列的点乘。用法:vander(n)Hilb 矩阵的每个元素是 hij= 1 ,用法:hilb(n)i + j - 1toeplitz 矩阵除第一行和第一列外,其他每个元素都与其相邻左上角的元素相同。用法:1toeplitz(x,y)或者(x),这里 x 和 y 都为向量,生成以 x 为第一列,y 为第一行的 toeplitz 矩阵伴随矩阵 compan:设多项式 p(x) = anxn + an-1xn-1 + + a x + a0,则多项式的伴随矩阵- an-1