MATLAB语言程序设计.ppt

上传人:sh****n 文档编号:6379904 上传时间:2020-02-24 格式:PPT 页数:46 大小:479.05KB
返回 下载 相关 举报
MATLAB语言程序设计.ppt_第1页
第1页 / 共46页
MATLAB语言程序设计.ppt_第2页
第2页 / 共46页
MATLAB语言程序设计.ppt_第3页
第3页 / 共46页
点击查看更多>>
资源描述
第2章MATLAB语言程序设计基础 2 1MATLAB语言数据类型2 2数值运算2 3符号运算2 4MATLAB语言程序控制结构2 5M文件概述2 6MATLAB图形绘制2 7实例解析 本章目标 了解MATLAB语言程序设计及图形绘制的基本内容 2 1MATLAB语言数据类型 MATLAB支持的基本数据类型见下图 MATLAB的数据类型 一 变量与常量 变量是任何程序设计语言的基本元素之一 它是指其数值在数据处理的过程中可能会发生变化的一些数据量名称 而常量则是指在计算过程中数值不发生变化的量 MATLAB语言变量有如下特点 不要求对所使用的变量进行事先声明 也不需要指定变量类型 MATLAB会自动根据所赋予变量的值或对变量所进行的操作来确定变量的类型 在赋值过程中 如果变量已经存在 MATLAB会用新值代替旧值 并以新的变量类型代替旧的变量类型 如果没有事先声明 MATLAB中的变量指的是局部变量 此外用户还可以使用global 函数来定义全局变量 全局变量可以用于不同函数文件之间的传递 但也正是由于全局变量的这种特性使得程序的可读性降低甚至容易出错 所以建议读者一般不要使用全局变量 MATLAB语言中还有一些预定义的变量 这些变量即称为常量 下表列出了MATLAB语言中常用的几个常量 注 NaN与Inf的乘积仍为NaN 二 数值型数据 数值型数据包括整数 带符号和无符号 和浮点数 单精度和双精度 在缺省 默认 状态下 MATLAB将所有的数都看作是双精度的浮点数 使用整型变量和单精度变量可以节约内存空间 三 符号型数据 符号型数据是一般科学计算软件所不具有的 它可以用于公式的推导和数学问题的解析解法 在进行解析运算前需要首先将采用的变量申明为符号变量 这需要用syms 函数实现 例如 symsab 四 字符串 字符与字符串运算是各种高级语言不可缺少的部分 它可以用来表示一些MATLAB函数的属性值 并用于显示中英文内容等 MATLAB具有强大的字符处理能力 1 字符串的定义 MATLAB提供了以下几种方法来定义一个字符串 直接用单引号赋值 利用char 函数结合ASCII码来生成字符串 因为字符串中的字符是以ASCII码存储的 所以大小写是有区别的 可以用double 函数或abs 函数查看一个字符串的ASCII码 利用字符数组生成字符串 例如 用户可以在命令窗口中输入如下语句 s1 Ilovematlab 方式1s2 char 733210811111810132109971161089798 方式2s3 I l o v e m a t l a b 方式3 2 字符串的连接 字符串可以利用 运算符进行拼接 不过拼接字符串时需要注意以下两点 若使用 作为不同字符串之间的间隔 则相当于扩展字符串成为更长的字符串向量 若使用 作为不同字符串之间的间隔 则相当于扩展字符串成为二维或者多维的数组 这时 不同行上的字符串必须具有同样的长度 此外还可以利用MATLAB提供的函数实现字符串的拼接 strcat 函数实现字符串水平连接strvcat 函数实现字符串垂直连接 五 元胞与结构体型数据 1 元胞数组用户可以使用以下两种方法来建立一个元胞数组 用赋值语句直接定义 由cell 函数预先分配存储空间 然后对细胞的每个元素逐个赋值 元胞数组中元素一般可以用A m n 或A m n 这两种方式来调用 它们的不同之处在于 A m n 得到的结果的类型为元素自身的类型 而A m n 的数据类型为元胞数组类型 2 结构数组 结构体是MATLAB中比元胞数组更广义的数组 它的每一个元素都称为域 域中可以存放任意类型的数据结构 与其他数组不同的是结构数组用域名来调用域的内容 结构数组具有层次数据结构 它可以描述一个班级下的每个学生的姓名 性别 课程和得分这样的层次结构 该层次的结构可以存放广泛的数据类型 如典型的MATLAB图形结构就是用结构数组来组织的 由屏幕 菜单 图形和修饰图形的元素自上而下这样的层次组成 同元胞数组类似 结构数组的创建也有两种方法 用赋值语句直接定义 用结构函数structure 来直接产生 六 不同数据类型之间的转化 MATLAB提供了丰富的函数来实现常用数据类型间的转换 具体见下图 注 上图中的S2N包括 str2int str2num str2mat sscanf等 N2S包括 int2str num2str mat2str sprintf等 2 2数值运算 一 矩阵及其运算 MATLAB中是以矩阵作为基本编程单元的 所以矩阵运算十分重要 1 矩阵的输入在MATLAB中 输入矩阵可有以下几种方法 输入元素列表 a 123 456 789 从外部数据文件中读取矩阵 loaddata mat 利用MATLAB内部函数与工具箱函数产生矩阵 a eye 4 用户自己编写语句产生矩阵 r 5 10 rand 2 3 2 矩阵的基本运算矩阵的基本运算主要包括矩阵的代数运算 逻辑运算和关系运算 代数运算主要包括矩阵转置 通过 或transpose函数实现 矩阵加 减 乘 除 左除 右除 乘方 和点 运算 逻辑运算包括与 和 或 和 非 和异或 xor 关系运算包括等于 不等于 大于 小于 二 多项式及其运算 1 多项式的构造MATLAB中构造多项式主要通过函数poly2sym 和poly2str 实现 这两个函数的调用格式如下 poly2sym C V poly2str C V 其中 C为多项式系数向量 按降幂排列 V为指定的变量 对于poly2sym 函数 V的默认值为x 而对于poly2str 函数V必须指定 2 多项式的基本运算多项式的基本运算包括加 减 乘 conv 除 deconv 微分 polyder 积分 polyint 估值 polyval 和求根 roots 三 复数及其运算 1 复数绘图对于复数函数的绘图主要有两种形式 一种是直角坐标图 plot 即分别以复数的实部和虚部为坐标作出复数的表示图 另一种为极坐标图 polar 即以复数的模和幅角为坐标作图 例如 编写如下语句 t 0 0 1 2 pi y t i t sin t r abs y theta angle y 求极半径和极角 theta r cart2pol t t sin t subplot121 plot y title 直角坐标图 subplot122 polar theta r title 极坐标图 输出结果如右图所示 2 复数的基本运算复数的基本运算包括求复数的实虚部 幅值和相角以及其共轭复数等 相关的操作函数为 real imag abs angle和conj 3 留数的计算由复变函数课程的学习可知 留数的计算可以最终归结为极限的计算 下面仅介绍留数在MATLAB中的求解 相关的实现语句如下 c limit F z z0 z z0 单奇点c limit diff F z z0 m z m 1 prod 1 m 1 z a m重奇点这里需要对上述两个函数作一点说明 limit 函数是求极限的函数 prod 函数是求连乘的函数 例如 symsx limit sin x x ans 1prod 13647 ans 504 2 3符号运算 一 符号微积分1 符号极限MATLAB语言的符号运算工具箱提供的limit 函数可以用来求解极限问题 其具体调用格式如下 L limit F x a L limit F x a right 或 left 其中 F为极限表达式且必须为符号表达式 x为符号自变量 求解之前应先用symsx声明 若x findsym F 则可省略 a为极限点 可以是一个确定的值 函数或无穷 right 或 left 是单边极限的定义 给出左右选项 2 符号导数如果函数和自变量都已知 且均为符号变量 则可以用diff 函数解出给定函数的各阶导数 该函数的调用格式为 dF diff F x n 其中 n为求导的阶次 缺省值为1 其余参数同limit 函数 3 符号积分MATLAB符号运算工具箱中提供的int 函数可以直接用来求取积分问题的解析解 该函数的常用调用格式为 I int f x 求不定积分I int f x a b 求定积分其中f为被积函数 x是自变量 a b是积分区间 可以为确定的值 函数或无穷 4 符号级数级数展开单变量函数的Taylor幂级数展开单变量函数的Taylor幂级数展开可以用符号工具箱的taylor 函数直接导出 其调用格式为r taylor f x n a 其中f为函数的符号表达式 x为符号自变量 若函数只有一个自变量 则x可以省略 n为需要展开的项数 默认值为6 a为函数展开点 表明需要获得关于x a的幂级数展开 a的默认值为0 多变量函数的Taylor幂级数展开MATLAB并未提供计算多变量函数Taylor幂级数展开的直接函数 但它可以调用maple语言中的mtaylor 函数来直接求取多变量函数的Taylor幂级数展开 该函数的调用格式如下 T maple mtaylor f x1 x2 xn n 格式1T maple mtaylor f x1 x2 xn n 格式2T maple mtaylor f x1 a1 x2 a2 xn an n 格式3T maple mtaylor f x1 a1 x2 a2 xn an n 格式4其中格式1与格式2等价 格式3与格式4等价 格式1与格式2主要用于求解原点处的Taylor展开 格式3和格式4主要用于求解 a1 a2 an 处的Taylor展开 n 1为展开的最高阶次 Fourier级数展开给定周期函数 其中 我们可以人为地对该函数在其他区间上进行周期延拓 使得这样可以根据需要将其写成下面的级数形式 其中 该级数称为Fourier级数 根据上述公式这里编写了函数fseriessym和fseriesquadl来求解函数的Fourier级数展开 具体的源文件参看教材 级数的求和MATLAB符号运算工具箱提供的symsum 函数可以用于求解已知通项的有穷或无穷级数的和 该函数的调用格式为 r symsum s v a b 其中 s为级数的通项 v为级数自变量 a和b为级数求和的起始项和终止项 并可以将起始项或终止项设置成无穷量inf 如果s变量中只含有一个变量 则在函数调用时可以省略v 5 符号积分变换Fourier变换及其逆变换MATLAB提供了专门的Fourier变换的求解函数 fourier 和ifourier 这两个函数的调用格式如下 Fw fourier ft t w ft ifourier Fw w t Laplace变换及其逆变换MATLAB中提供了专门的Laplace变换求解函数 laplace 和ilaplace 这两个函数的调用格式如下 Fs laplace ft t s ft ilaplace Fs s t Z变换及其逆变换MATLAB中提供了专门的Z变换求解函数 ztrans 和iztrans 这两个函数的调用格式如下 FZ ztrans fn n z fn iztrans FZ z n 二 符号方程的求解 1 符号代数方程的求解一般代数方程包括线性 Linear 非线性 Nonlinear 和超越 Transcendental 方程等 MATLAB提供了统一的求解函数solve 该函数的调用格式为 S solve eqn1 eqn2 eqnn v1 v2 vn 格式1S solve eqn1 eqn2 eqnn v1 v2 vn 格式2 x1 x2 xn solve eqn1 eqn2 eqnn v1 v2 vn 格式3其中 eqni是第i个方程的符号表达式 vi是第i个符号变量 格式1和格式2中的S是一个结构数组 要显示出显式解 可通过S vi得到 2 符号微分方程的求解MATLAB提供了dsolve 函数求解微分方程 该函数允许用字符串的形式描述微分方程及初值 边值条件 最终将给出微分方程的解析解 该函数的调用格式为 sols dsolve eq1 eq2 cond1 cond2 v 格式1sols dsolve eq1 eq2 cond1 cond2 v 格式2其中eqi表示微分方程组的第i个表达式 condi是第i个初始条件 v是eqi中指定的符号自变量 缺省变量为t 2 4MATLAB语言程序控制结构 一 顺序结构顺序结构是指按照程序中语句排列顺序一次执行 直到程序的最后一个语句 这是最简单的一种程序结构 一般涉及数据的输入 数据的计算或处理 数据的输出等内容 1 数据的输入从键盘上输入数据 可以使用input 函数 该函数的调用格式为 user entry input prompt 格式1user entry input prompt s 格式2其中 prompt是提示信息 比如提示输入某某参数等 s用于指定输入内容为一个字符串 2 数据的输出MATLAB提供的命令窗口输出函数主要是disp 和fprintf 函数 disp 函数的调用格式为 disp X 其中 X是需要输出的内容 可以是字符串 也可以是矩阵 fprintf 函数的使用方法类似于C语言中的printf 函数 但有些参数的含义有细微差别 读者可自行摸索 2 4 2选择结构 条件语句MATLAB中 条件语句由if end语句实现 if end一般有以下三种使用形式 单分支if语句双分支if语句多分支if语句其执行语句组如下 if条件语句组end if条件语句组1else语句组2end if条件1语句组1elseif条件2语句组2 elseif条件n语句组nelse语句组mend 单分支 双分支 多分支 开关语句开关语句根据表达式的取值不同 分别执行不同的语句 其语句格式为 switch开关表达式case表达式1语句组1case表达式2语句组2 case表达式n语句组notherwise语句组mend 三 循环结构 1 for语句for语句的一般语句格式为 其中 V是一个向量 循环变量每次从向量V中取一个值 执行一次循环体语句 如此下去 直至执行完V向量中的所有分量 将自动结束循环体的执行 2 while语句while语句的一般语句格式为 其中 条件为真时 执行循环体语句 for循环变量 V循环体语句end while 条件 循环体语句end 四 试探结构 试探结构是MATLAB独有的一种语句结构 它主要用来对异常情况进行处理 其一般语句格式为 在执行程序时 该语句结构首先试探性地执行语句段1 如果语句段1出现错误时 控制语句catch就会捕获它 并执行相应的语句段2 try语句段1catch语句段2end 五 递归结构 程序调用自身的编程技巧称为递归 recursion 它是一种在程序设计语言中广泛使用的算法 但同时递归结构也是比较难理解和掌握的 递归结构可以使程序变得简洁 但是程序可读性降低 同时程序的运行效率也比较低 2 5M文件概述 一 M文件编辑器MATLAB的M文件是一个文本文件 可以通过任何编辑器来建立与编辑 最为方便的是使用MATLAB提供的M文件编辑器 Editor 建立一个新的M文件可以有以下几种方法 单击菜单命令File New BlankM file在MATLAB命令窗口中输入命令edit创建单击MATLAB窗口上的图标创建打开一个已有的M文件也相应的有以下方法 单击菜单命令File Open 从弹出的对话框中选定所需打开的M文件在MATLAB命令窗口中输入命令 edit文件名单击MATLAB窗口上的图标 再从弹出的对话框中选定所需打开的M文件 二 M 脚本文件 M 脚本文件的执行方式很简单 用户只需在MATLAB的提示符 下键入该M文件的文件名 MATLAB就会自动执行该M文件中的各条语句 M 脚本文件运行产生的变量都驻留在MATLAB的工作空间 Workspace 中 这样可以很方便地查看变量 但值得注意的是M 脚本文件中的变量都是全局变量 因此要十分注意避免变量的覆盖而造成程序出错 三 M 函数文件 M 函数文件是由function语句引导 其基本结构为 其中 以function开头的一行为声明行 表示该M文件是一个函数文件 函数名的命名规则与变量名相同 函数可以没有输出参数 当只有一个输出参数时 可以不加方括号 函数一般至少有一个输入参数 M 函数文件在运行过程中产生的变量都存放在函数本身的工作空间 当文件执行到最后一行或遇到 return 命令时 就结束函数文件的运行 同时函数工作空间中的变量被清除 function 输出变量列表 函数名 输入变量列表 注释说明部分函数体语句 四 几个特殊函数 1 inline 函数inline 函数的一般调用格式为 fun inline expr 格式1fun inline expr arg1 arg2 格式2fun inline expr n 格式3其中 expr是任何本身有效的字符串表达式 arg1 arg2 是出现在expr中的所有变量的名字 格式3是将字符串表达式转换为输入变量为 x P1 P2 Pn 生成的内联函数 2 匿名函数匿名函数是自MATLAB7 0版起给出的一种全新的函数描述形式 其描述格式类似于inline 函数 但又比inline 函数更简洁 更容易使用 而且效率也更高 匿名函数的一般使用格式为 fun arg1 arg2 expr其各参数的含义与内联函数中的相同 3 feval函数MATLAB提供的feval 函数是用来执行函数操作的函数 故有 函数的函数 之称 其一般调用格式为 y1 y2 feval fhandle x1 xn y1 y2 feval function x1 xn 其中 fhandle是函数句柄 函数句柄是一种数据类型 以 来引导 例如 sin function是函数名 x1 x2 xn是输入参数 相应的y1 y2 yn是输出参数 2 6MATLAB图形绘制 一 图形窗口简介在MATLAB下建立一个图形窗口可由函数figure 来完成 或者可以选择 File 菜单下的 NewFigure 命令来建立图形窗口 每执行一次该命令就产生一个图形窗口 MATLAB会自动在这些窗口的名字上依次添加序号 Figure1 Figure2 作为区别 但是函数figure 可指定创建窗口的编号 其常见的用法如下 figure n 格式1figure PropertyName PropertyValue 格式2其中格式1是用于创建标号为n的图形窗口 格式2是创建一个图形窗口对象并设置其相关属性 常用图形窗口对象的属性及属性名见表2 14 MATLAB还提供了函数close 关闭图形窗口 该函数的调用格式为 close h 关闭句柄为h的图形窗口 默认值为gcfclosename 关闭指定名称的图形窗口closeall 关闭所有的图形窗口 另外 MATLAB还提供了一个分割图形窗口的函数subplot 该函数的调用格式主要有 subplot m n p 格式1subplot mnp orsubplotmnp 格式2subplot Position leftbottomwidthheight 格式3其中 格式1和格式2的功能是将当前图形窗口分成m n个绘图区 m和n分别表示图形窗口中子图的行数和列数 p表示子图的序号 序号按行优先编号 格式2是格式1的省略写法 因为格式2只适合m n和p均为一位整数的情况 格式3的功能是在指定的位置绘制坐标轴 left和bottom是坐标轴坐下角点的位置坐标 相对于整个Figure空白区域的比例 width和height是坐标轴的宽和高 二 二维图形的绘制 MATLAB提供了具有不同功能的二维图形绘制函数 它们以不同的方式来表现各种数据的涵义 这些涵义的不同本身就体现在曲线的外观上 具体的函数如下表 函数plot semilogx semilogy 和loglog 可以用来绘制一般的曲线 它们的用法完全一致 只是曲线的外观有所不同 这几个函数的共同调用格式为 function plot Y 格式1function plot X Y LineSpec 格式2function plot X Y PropertyName PropertyValue 格式3其中 function plot是函数plot semilogx semilogy 和loglog 的统一描述 三 三维图形的绘制 三维图形主要包括三维曲线图和三维曲面图 MATLAB中也就图形形式的不同给出了不同的图形绘制函数 具体如下 1 三维曲线图的绘制MATLAB提供的绘制三维曲线的函数主要有line 和plot3 这两个函数的调用格式类似于plot 下面仅简要介绍plot3 函数的用法 plot3 函数的调用格式为 plot3 X1 Y1 Z1 LineSpec 格式1plot3 X1 Y1 Z1 PropertyName PropertyValue 格式22 三维网格图的绘制MATLAB提供的mesh 函数可以绘制三维网格图 其调用格式为 mesh Z 格式1mesh X Y Z 格式2mesh X Y Z C 格式3mesh X Y Z PropertyName PropertyValue 格式4另外 MATLAB还提供了surf函数来绘制着色表面图 该函数的调用方法和mesh函数类似 这里不再赘述 四 图形修饰 1 图形标注图形标注主要包括坐标轴窗口标注 图题标注 坐标轴的标注和图例标注 坐标轴窗口标注text 函数和gtext 函数都是用来在坐标轴窗口标注内容 不同的是gtext 函数只能用来标注二维图形 而text 函数则不然 它们的调用格式为 text x y string 格式1text x y z string 格式2text x y z string PropertyName PropertyValue 格式3gtext string 格式4gtext string1 string2 string3 格式5gtext string1 string2 string3 格式6其中x y z是标量或长度相等的向量 string是要添加的字符串 图例添加legend 函数用来为图形添加图例 它的调用格式很多 下面就其中几种常见的调用格式加以说明 legend string1 string2 格式1legend h string1 string2 格式2legend mode 或legendmode或legend axes handle mode 格式3legend pos 格式4其中 string1 string2 是要标注的字符串 坐标轴标注xlabel ylabel和zlabel 函数用于坐标轴的x y和z 轴的标注 这3个函数的用法完全相同 这里仅以函数xlabel函数为例介绍其使用方法 其调用格式为 xlabel string PropertyName PropertyValue 其中 string是所要标注的字符串 PropertyName和PropertyValue是设置的属性及属性值 它们必须成对出现 常见的有字体 字号等 标题添加title 函数用于给图形添加标题 并对标题设置若干属性 其调用格式为 title string PropertyName PropertyValue 其各参数的含义同于xlabel 函数 基本图形的绘制annotation 函数可以用来绘制线段 箭头 双向箭头 文本箭头 文本框 椭圆和矩形等基本图形 其调用格式为 annotation annotation type x y 格式1annotation annotation type xywh 格式2annotation PropertyName PropertyValue 格式3 2 图形编辑MATLAB中通过一些低级绘图指令可以很好的控制和绘制一些精细的图形 它主要通过set和get函数实现 这两个函数分别用来查询和设置相关属性 它们的调用格式为 returned value get object handle PropertyName 查询句柄为object handle的图形对象元素的PropertyName属性取值 返回给returned valueset object handle PropertyName NewPropertyValue 将句柄为object handle的图形对象元素的PropertyName属性取值设置为 NewPropertyValue 五 函数绘图 MATLAB提供了一些根据函数表达式来绘制图形的函数 它们可以很容易地实现符号表达式的图形化 具体介绍如下 1 fplot函数fplot函数通过其内部的自适应算法来动态决定自变量的间隔 其一般调用格式为 fplot fun limits LineSpec 格式1fplot fun limits tol LineSpec 格式2fplot fun limits n 格式3fplot fun limits tol n LineSpec p1 p2 格式4其中 fun是需要绘制曲线的函数名称 limits表示绘制图形的坐标轴取值范围 可以有两种方式 xmin xmax 表示图形x坐标轴的取值范围 xmin xmax ymin ymax 表示x y坐标轴的取值范围 tol表示函数相对误差精度 其默认值为2e 3 n用于指定绘图的最少点为n 1 因此最大步长为 xmax xmin n n的默认值为1 LineSpec用于指定曲线的线型 颜色和标记符号等 p1 p2 是函数fun的附加参数 2 ezplot函数MATLAB提供的ezplot 函数可以直接画出字符串函数或符号函数的图形 该函数的调用格式为 ezplot fun min max 格式1ezplot fun xmin xmax ymin ymax 格式2ezplot funx funy tmin tmax 格式3ezplot figure handle 格式4其中fun是输入函数名或表达式 可以为一元函数或隐函数 当fun是的形式时 min max 是自变量的取值范围 其默认值为 当fun是的形式时 min max 满足min x max min y max xmin xmax ymin ymax 用于指定横纵坐标的范围 其默认值为 funx funy是参数方程的表达式 tmin tmax 用于指定参数方程自变量的范围 其默认值为 figure handle是指定的图形窗口 默认值为当前图形窗口 类似地 MATLAB提供的ezplot3 函数可以用来绘制三维参数曲线 其具体调用格式为 ezplot3 funx funy funz tmin tmax animate 其中 animate 用来设置动画的绘制曲线过程 可省略 3 ezcontour函数ezcontour 函数是根据函数表达式来绘制等高线的 其调用格式为 ezcontour fun domain ezcontour fun domain n 其中fun表示函数的表达式 domain表示绘制图形的坐标轴取值范围 可以有两种方式 min max 表示min x max min y max xmin xmax ymin ymax 表示xmin x xmax ymin y ymax domain的默认值为 n用于指定绘制网格时采用的离散取样点数 其默认值为60 六 专用图形的绘制1 条形图条形图适用于绘制离散数据 对于比较不同的数据 用条形图一目了然 MATLAB提供了4个用于绘制条形图的指令 bar bar3 barh和bar3h 其中函数bar 和bar3 分别用来绘制二维和三维竖条形图 而barh和bar3h则用来绘制水平条形图 上述几个函数的调用格式类似 下面仅以bar 函数为例加以说明其用法 bar 函数的调用格式有 bar Y bar x Y bar width bar style bar bar color bar PropertyName PropertyValue 其中Y是待统计的数据 它是向量或矩阵 x是x轴的坐标 其默认值为1 size Y 1 width用于指定bar的宽度 当width 1时相邻的bar之间就会存在重叠的情况 width的默认值为0 8 style用于指定条形图的分布方式 它有以下几个选项 grouped 排列型条形图 默认值 stacked 堆型条形图bar color是一个单字符 用于指定所有条形图的颜色 可选值为表2 16中颜色栏的所有颜色值 其他的颜色需要通过句柄来设定 2 面积图面积图适用于绘制连续数据 从面积图绘制的图形中我们可以很直观地看到各个数据在总和中所占的比例 所以它特别使用于商业统计 MATLAB专门提供了命令area来绘制面积图 它的调用格式为 area Y area X Y area basevalue area PropertyName PropertyValue 其中 area X Y 的执行过程为先调用plot x y 然后根据当前的颜色映像 用均匀分布的颜色进行填充 basevalue是指定填充时到达的最小y坐标 缺省时basevalue 0 即填充到x轴为止 参数 PropertyName 和PropertyValue为area生成的图形指定属性值 例如表面颜色 facecolor 边缘颜色 edgecolor 和线宽 linewidth 等 3 饼图饼图用于显示向量中的元素占向量元素总和的百分比 不仅直观 而且很美观 MATLAB中提供了函数pie 和pie3 分别用于绘制二维和三维饼图 它们的用法类似 以函数pie为例 该函数的调用格式为 pie X pie X explode pie labels 其中x是欲分析数据对应的数组 explode与x的维数相同 其中的非零元素对应的切片是分离的切片 labels中的参数是增加的自定义标注内容 它与x的维数也相同 七 动画的制作利用动画可以观察变化全过程的更多信息 同时可能得到相关的规律 本节将介绍如何利用MATLAB制作动画 MATLAB中动画的制作主要有以下两种方式 电影动画 在保存多幅图像后以电影的形式播放出来 这种方式适用于获取一幅图像时间较长的情况 用户可以在计算出所有图像后反复观察图像变化过程 擦除动画 在图形窗口中不断地计算并画出图形 在当前图形窗口中只显示利用当前参数计算所得的图片 这样看起来就具有动画效果了 这种方式适用于获得图像时间较短的情况 1 电影动画电影动画的好处就是 运行一次可以多次播放 而且可以直接生成 avi文件 直接独立于MATLAB环境播放 MATLAB中 创建电影动画的过程主要分为以下2个步骤 1 调用moviein 函数对内存进行初始化 该步骤在MATLAB5 3以上均可省略 创建一个足够大的矩阵 使之能够容纳基于当前坐标轴大小的一系列指定的图形 此处称为帧 2 调用getframe 函数生成每个帧 该函数可以捕捉动画帧 并保存到矩阵中 一般将该函数放到for循环中得到一系列的动画帧 该函数的调用格式主要有 F gefframe 从当前图形框中得到动画帧F gefframe h 从图形句柄h中得到动画帧F getframe h rect 从图形句柄h的指定区域rec中得到动画帧另外 MATLAB还提供了函数avifile 来记录动画过程 利用该函数可以得到一个avi 文件 该函数调用格式为 aviobj avifile filename aviobj avifile filename Param1 Val1 Param2 Val2 其中aviobj用于标记 avi文件 相当于一个句柄 filename是avi文件的名称 Parami和Vali分别是该函数的属性和相应取值 用于控制 avi文件的质量等属性 2 擦除动画使用MATLAB的绘图函数不断重复绘制图形对象 重绘过程中递增式地改变图形对象位置将产生动画效果 之所以能产生动画效果是由于对原来的图形对象进行了擦除处理 MATLAB中 创建擦除重绘动画的过程分为以下三步 1 设置重绘对象的擦除模式MATLAB的图形绘制函数允许采用不同的擦除模式来擦除原来的对象 不同的擦除模式将产生不同的动画效果 擦除模式是通过设置 EraseMode 属性来完成的 其相关属性值读者自行参看帮助文档 2 在循环语句中使用set 函数更改图形的xdata ydata和zdata等坐标数据 3 使用drawnow命令刷新屏幕或利用pause 函数设置暂停时间
展开阅读全文
相关资源
相关搜索

当前位置:首页 > 图纸专区 > 课件教案


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

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


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