MATLAB经典数学建模教程

上传人:gbs****77 文档编号:9944113 上传时间:2020-04-09 格式:DOC 页数:88 大小:2.43MB
返回 下载 相关 举报
MATLAB经典数学建模教程_第1页
第1页 / 共88页
MATLAB经典数学建模教程_第2页
第2页 / 共88页
MATLAB经典数学建模教程_第3页
第3页 / 共88页
点击查看更多>>
资源描述
1 第 1 节 Matlab 基本知识 一 Matlab 的主要功能 Matlab 是一种功能非常强大的工程语言 诞生于 20 世纪 70 年代 1984 年正式推向 市场 2002 年 8 月 Matlab6 5 开始发布 是进行科学研究和产品开发必不可少的工具 数值和符号计算 矩阵 数组 的四则运算 Matrix Laboratory 数值差分 导数 积分 求解微分方 程 微分方程的优化等 数字图像 数字信号处理 工程和科学绘图 控制系统设计 财务工程 建模 仿真功能 二 Matlab 的界面 1 命令窗口 Command Window Matlab 各种操作命令都是由命令窗口开始 用户可以在命令窗口中输入 Matlab 命令 实 现其相应的功能 此命令窗口主要包括文本的编辑区域和菜单栏 如 四则运算 禁 止显示变量的值 遍历以前的命令 在命令窗口空白区域单击鼠标右键 打开快捷菜 单 各项命令功能如下 Evaluate Selection 打开所选文本对应的表达式的值 Open Selection 打开文本所对应的 MatLab 文件 Cut 剪切编辑命令 Paste 粘贴编辑命令 2 M 文件编辑 调试 Editor Debugger 窗口 Matlab Editor Debugger 窗口是一个集编辑与调试两种功能于一体的工具环境 M 文件 函数文件 什么是 M 文件 它是一种和 Dos 环境中的批处理文件相似的脚本文件 对于简单问 题 直接输入命令即可 但对于复杂的问题和需要反复使用的则需做成 M 文件 Script File 创建 M 文件的方法 Matlab 命令窗的 File New M file 在 Matlab 命令窗口运行 edit M 文件的扩展名 m 执行 M 文件 F5 M 文件的调试 选择 Debug 菜单 其各项命令功能如下 Step 逐步执行程序 Step in 进入子程序中逐步执行调试程序 2 Step out 跳出子程序中逐步执行调试程序 run 执行 M 文件 Go Until Cursor 执行到光标所在处 Exit Debug Mode 跳出调试状态 函数文件的创建要求 文件名与函数名必须相同 如 sin x 必有 sin m 函数文件存在 要求实参和形参位置一一对应 形参在工作空间中不会存在 可以编写递归函数 可以嵌套其他函数 可以用 return 命令返回 也可以执行到终点返回 3 工作空间 Workspace 窗口 显示目前保存在内存中的 Matlab 的数学结构 字节数 变量名以及类型窗口 保存变量 File 菜单 Save Workspace as 命令行 save 文件名 装入变量 File 菜单 Import Data 命令行 Load 文件名 4 现在目录窗口 Current Directory 5 命令历史窗口 Command History 提供先前使用过的函数 可以复制或者再次执行 这些命令 Matlab 帮助系统 Matlab 在命令窗口提供了可以获得帮助的命令 用户可以很方便的获得帮助信息 例如 在窗口中输入 help fft 就可以获得函数 fft 的信息 常用的帮助信息有 help demo doc who whos what which lookfor helpbrowser helpdesk exit web 等 三 关于变量 变量命名规则 变量名是不包含空格的单个词 变量名区分大小写 变量名必须以字母开头的字母 数字 下划线的组合 最多 19 个字符 Matlab 提供的标准函数名均以小写字母开头 特殊变量名 ans 缺省变量名 pi 圆周率 i j 虚数单位 eps 无穷小 inf Inf 无穷大 realmax 最大正实数 realmin 最小正实数 清除变量的值 clear clear 变量名 1 变量名 2 显示驻留内存的变量名 who whos 3 第 2 节 Matlab 编程 一 矩阵 数组 的输入 1 直接输入 直接按行方式输入每个元素 同一行中的元素用逗号 或者用空格符来分隔 且空 格个数不限 不同的行用分号 分隔 所有元素处于一方括号 内 多维矩阵用 多重方括弧 可建立复数矩阵 如 Null M 生成一个空矩阵 可建立复数矩阵 R 1 2 3 4 5 6 I 7 8 9 10 11 12 Z R I j 2 由 M 文件方式建立 今后使用键入 M 文件名即可建立相应矩阵 2 利用函数输入 表达式 产生等差行向量 start step end 或 start end step 1 如 t 1 20 产生等距输入 linspace a b n 将 a b 区间分成 n 1 个等距小区间 产生随机排列 randperm n 产生 1 n 之间整数的随机排列 3 特殊矩阵输入 zeros n 生成 n n 全零阵 zeros a b 元素全为 0 的 a b 维矩阵 以下各函数同理具有该类型 zeros size A 生成与矩阵 A 相同大小的全零阵 ones a b 元素全为 1 的 a b 维矩阵 eye a b 对角线上的元素为 1 的 a b 维矩阵 rand a b 产生 a b 维均匀分布的随机矩阵 其元素在 0 1 内 rand 无变量输入时只产生一个随机数 randn a b 产生 a b 维正态分布的随机矩阵 4 矩阵的转置和逆矩阵 X 的转置 X 图像顺时针旋转 90 并水平镜像 如 a imread D 2 1 bmp b a subplot 1 2 1 subimage a subplot 1 2 2 subimage b X 的逆矩阵 inv X 二 矩阵元素的访问及其大小的确定 访问第 n 个元素 X n n 1 访问多个元素 X n1 n2 n3 或 X 1 10 确定元素的个数 numel X 确定矩阵的大小 m n l size X 三 矩阵的算数运算 数与矩阵的运算 m 等价于 m m A m 与 A 中各元素相加 4 m A m 与 A 中各元素相减 m A m 与 A 中各元素相乘 m A m 除以 A 中各元素 没有 m A m A A 中各元素除以 m 矩阵与矩阵的运算 A B A B 对应元素相加 A B A B 对应元素相减 A B A B 矩阵按线性代数中矩阵乘法运算进行相乘 注意维数匹配 A B A B 对应元素相乘 注意维数相同 A B A 除以 B 矩阵 A B 1 注意维数匹配 A B A 除以 B 中各元素 A B B 除以 A 矩阵 A 1 B 注意维数匹配 A B B 除以 A 中各元素 A m 相当于矩阵 A 矩阵 A 矩阵 A m 为小数即是矩阵的开方运算 注意维数 匹配 A m 矩阵 A 中各元素的 m 次方 A B 矩阵 A 中各元素的进行 B 中对应元素次方 注意维数相同 四 关系运算 六种关系运算符 关系成立结果为 1 否则为 0 五 逻辑运算 设矩阵 A 和 B 都是 m n 矩阵或其中之一为标量 在 MATLAB 中定义了如下的逻辑 运算 i 依次取 1 2 10 x i i 对每个 i 值 重复执行由该指令构成的循环体 end x 要求显示运行后数组 x 的值 x 1 2 3 4 5 6 7 8 9 10 while 循环结构 例 Fibonacci 数组的元素满足 Fibonacci 规则 且12 kka 2 现要求计算出该数组中第一个大于 10000 的元素 121 a a 1 1 a 2 1 i 2 while a i 8 sums number 0 95 cost end sums sums 114 0000 6 例 2 用 for 循环指令来寻求 Fibonacc 数组中第一个大于 10000 的元素 n 100 a ones 1 n for i 3 n a i a i 1 a i 2 if a i 10000 a i break 跳出所在的一级循环 end end i ans 10946 i 21 switch case 结构 例 学生的成绩管理 演示 switch 结构的应用 clear 划分区域 满分 100 优秀 90 99 良好 80 89 及格 60 79 不及格 diff cos x differentiate cos x with respect to x ans sin x M sym a b c d create a symbolic matrix M M a b c d 注意 1 建立符号数组时 最好用上函数sym 2 许多符号函数可以自动将字符转变为符号表达式 例如diff cos x 也可以 diff x 2 3 x 5 the argument is equivalent to x 2 3 x 5 符号变量是符号表达式中的变量 如 x 3 y z 中的 x y z 独立变量是当符号表达式中含有多于一个的变量时 只有一个变量是独立变量 缺省 的独立变量是x 如果没有x 则选择最靠近x的作为独立变量 如表达式 1 5 cos x 9 中是 x 在 3 y z 中是 y 在 a sin t 是 t 而表达式 sin pi 4 cos 3 5 是一个符号常数无符号变量 可利用函数symvar 询问MATLAB在符号表达式中哪一个变 量它认为是独立变量 系统找不到一个独立变量 便假定无独立变量并返回x symvar a x y find the default symbolic variable ans x symvar a t s u 3 u is the closest to x ans u symvar sin omega omega is not a singlee character ans x symvar 3 i 4 j i and j are equel to sqrt 1 ans x 指定独立变量 diff x n differentiate with respect to the default variable x ans x n n x diff x n n differentiate x n with respect to n ans x n log x diff sin omega differentiate using the default variables x ans 0 diff sin omega omega specify the independent variable ans cos omega 第 2 节 符号表达式运算 目的 更方便的构造符号表达式 标准代数运算 symadd symsub symlnul symdiv 分别为加 减 乘 除两个表达式 sympow 将一个表达式上升为另一个表达式的幂次 例如 给定两个函数 fxgx 23572 f 2 x 2 3 x 5 define the symbolic expression f 2 x 2 3 x 5 g x 2 x 7 g x 2 x 7 10 symadd f g find an expression for f g ans 3 x 2 2 x 2 symsub f g find an expression for f g ans x 2 4 x 12 symmul f g find an expression for f g ans 2 x 2 3 x 5 x 2 x 7 symdiv f g find an expression for f g ans 2 x 2 3 x 5 x 2 x 7 sympow f 3 x find an expression for f3 ans 2 x 2 3 x 5 3 x 联接运算 symop 取由逗号隔开的 多至16个参量 各个参量可为符号表达式 数值或算子 或 然后symop 可将参量联接起来 返回最后所得的表达式 f cos x create an expression f cos x g sin 2 x create another expression g sin 2 x symop f g 3 combine them ans cos x sin 2 x 3 高级运算 compose 把f x 和g x 复合成f g x finverse 求函数的逆函数 symsum 求表达式的序列和 compose 给定表达式 fxgxhu 112 2sin k sin v 11 syms x y u v f 1 1 x 2 g sin y h 1 1 u 2 k sin v create the four expression compose f g find an expression for f g x ans 1 1 sin y 2 compose g f find an expression for g f x ans sin 1 1 x 2 用于含有不同独立变量的函数表达式 compose h k u v given h u k v find k v compose h k 结果一样 ans 1 1 sin v 2 finverse 表达式譬如f x 的函数逆g x 满足g f x x 例如 ex的函数逆是ln x 因为ln ex x sin x 的函数逆是arcsin x 函数 1tan 的函数逆是 arcsin 1 函数finverse返回表达 式的函数逆 如果解不是唯一就给出警告 syms x a b c d z finverse 1 x the inverse of 1 x is 1 x since 1 1 x x ans 1 x finverse x 2 g x 2 x has more than one solution Warning finverse x 2 is not unique ans x 1 2 finverse a x b find the solution to g f x x ans b x a finverse a b c d a z a find the solution to g f a a ans c d a b z 12 symsum 求表达式的序列和有四种形式 symsum f 返回 fx 01 symsum f s 返回 fs 01 symsun f a b 返回 fxab symsun f s a b 返回 fsab 1 x201 它应返回 x 326 syms n x 一定要定义符号变量 即使是x symsum x 2 ans 1 3 x 3 1 2 x 2 1 6 x 2 21n 它应返回 n 213 symsum 2 n 1 2 1 n ans 11 3 n 8 3 4 n 1 2 4 3 n 1 3 3 12 n 返回应是 28 syms n symsum 1 2 n 1 2 1 inf ans 1 8 pi 2 变量替换 subs 将某个符号变量用另一个符号变量来表示 格式 subs f old new 如 13 f a x 2 b x c create a function f x f a x 2 b x c subs f x s substitute s for x in the expression f ans a s 2 b s c subs f a alpha substitute alpha for a in f ans alpha x 2 b x c 求符号表达式的函数值 为了得到数字 需要使用函数eval 来转换字符串 syms x f symsum x 2 x 2 eval f 第 3 节 微积分 Calculus 函数 微分和积分广泛地用在许多工程学科 这部分的主要函数有 diff Differentiate 微分 Int Integrate 积分 Jacobian Jacobian matrix 雅可比行列式 Limit Limit of an expression 极限 Symsum Summation of series 序列和 Taylor Taylor series expansion 泰勒级数 微分和差分 diff f a x 3 x 2 b x c define a symbolic expression f a x 3 x 2 b x c diff f differentiate with respect to the default variable x ans 3 a x 2 2 x b diff f a differentiate with respect to a ans x 3 14 diff f 2 differentiate twice with respect to x ans 6 a x 2 diff f a 2 differentiate twice with respect to a ans 0 m 1 8 2 create a vector M 1 4 9 16 25 36 49 64 diff M find the differences between elements ans 3 5 7 9 11 13 15 如果diff的表达式或可变参量是数值 MATLAB就非常巧妙地计算其数值差分 如果 参量是符号字符串或变量 MATLAB就对其表达式进行微分 积分int 格式 int f 其中f是一符号表达式 它力图求出另一符号表达式F使diff F f 注意 积分或逆求导不一定是以封闭形式存在 或存在但软件也许找不到 或者软件 可明显地求解 但超过内存或时间限制 当MATLAB不能找到逆导数时 它将返回未经计 算的命令 int log x exp x 2 attempt to integrate ans log x exp x 2 积分函数的多种形式 int f 相对于缺省的独立变量x求逆导数 int f s 相对于符号变量s积分 int f a b 和int f s a b a b是数值 求解符号表达式从a到b的定积分 int f m n 和形式int f s m n 其中m n是符号变量 求解符号 表达式从m 到n 的定积分 f sin s 2 x crate a symbolic function f sin s 2 x int f integrate with respect to x ans 1 2 cos s 2 x 15 int f s integrate with respect to s ans cos s 2 x int f pi 2 pi integrate with respect to x from 2 to ans cos s int f s pi 2 pi integrate with respect to s from 2 to ans 2 cos x 2 1 2 sin x cos x int f m n integrate with respect to x from m to n ans 1 2 cos s 2 n 1 2 cos s 2 m diff 和 int 均可以对符号数组的每一个元素进行运算 F sym a x b x 2 c x 3 d s create a symbolic array F a x b x 2 c x 3 d s int F ubtegrate the array elements with respect to x ans 1 2 a x 2 1 3 b x 3 1 4 c x 4 d s x 第 4 节 数字信号处理常用 Matlab 函数简介 一 典型离散信号表示方法 1 单位冲击序列 n n 可以用 zero 函数来实现 x zeros 1 N x 1 1 2 单位阶跃序列 u n 可以用 ones 函数来实现 X ones 1 N 3 正弦序列 n 0 N 1 x A sin 2 pi f n Ts 4 指数序列 N 1 N 16 X a n 5 复指数序列 n 0 N 1 x exp j w n 6 随机序列 Rand 1 N 产生 0 1 上的均匀分布的随机序列 Rand 1 N 产生均值为 0 方差为 1 的高斯随机序列 即白噪声序列 二 滤波器分析与实现 滤波器分析与实现常用函数 abs 求绝对值 angle 求相角 conv 求卷积 conv2 求二维卷积 deconv 翻卷积 f1 filt 重叠相加法 fft 滤波器实现 filter 直接滤波器实现 filter2 二位数字滤波器 filtfilt 零相位数字滤波器 filtic Filter 初始条件选择 freqs 模拟滤波器频率响应 freqspace 画出频率响应曲线 freqz 数字滤波器频率响应 freqzplot 画出频率响应曲线 gGrpdelay 平均滤波延迟 latcfilt 格型滤波实现 impz 数字滤波器中的单位冲击响应 medfilt1 一维中值滤波 sosfilt 二次分式滤波器实现 zplane 离散系统零 极点图 upfirdn 上抽样 unwrap 去除相位 1 abs y abs x 计算 x 的绝对值 当 x 为复数时 其算其模值 当 x 为字符串时 计算各个 字符的 ASCII 码 2 angle angle h 计算复矢量或者复矩阵的相角 以弧度为单位 相角介于 之间 conv c conv a b 对序列 a b 进行卷积运算 filter y filter b a x 计算输入信号 x 的滤波器输出 向量 a b 分别是所采用的滤波器的分 子系数向量和滤波器的分母向量 y zf filter b a x zi 参数 zi 指定滤波器的初始条件 其大小为 zi max length a length b 1 y filter b a x zi dim dim 指定滤波器的维数 zi 或 表示空集 17 5 impz h t impz b a 返回参数 h 是冲击相应的数值 返回 t 是冲击相应的抽样时间间隔 h t impz b a N N 用来制定冲激信号长度 如果 N 是一个整数向量 只返回 N 元素所对应时刻的抽 样数值的冲击结果 N 为 表示不制定冲激信号的长度 其长度与滤波器结构保持一致 h t impz b a N fs Fs 用来指定冲击信号的抽样频率 默认值是 三 信号变换 常用变换函数 czt Chirp z 变换 dct 离散余弦变换 dftmtx 离散傅里叶变换 fft 一维快速傅里叶变换 fft2 二维快速傅里叶变换 fftshift 重新排列 fft 输出 Hilbert Hilbert 变换 idct 离散余弦反变换 ifft 一维快速傅里叶反变换 ifft2 二维快速傅里叶反变换 fft Y fft X 若 X 是向量 则采用傅里叶变换求解 X 离散傅里叶变换 若 X 是矩阵 则计算该 矩阵每一列的离散傅里叶变换 Y fft X N N 是进行离散傅里叶变换的 X 的数据长度 可以通过对 X 进行补或截取来实现 Y fft X dim 在参数 dim 指定的维上进行傅里叶变换 X 是矩阵时 dim 用来指变换的实施方向 dim 表明变换按列进行 dim 表明变换按行进行 第 5 节 方程求解 一 求解单个变量的代数方程 利用 solve 函数 1 没有 号的表达式 用solve将其置成等于0 solve a x 2 b x c solve for the roots of the quadratic eqution ans 1 2 a b b 2 4 a c 1 2 1 2 a b b 2 4 a c 1 2 注 方程有2个解 2 对其他非缺省变量求解 在 solve 中指定出该变量 solve a x 2 b x c b solve for b 18 ans a x 2 c x 3 对带有等号的方程求解 f solve cos x sin x solve for x f 1 4 pi t solve tan 2 x sin x t 0 pi atan 1 2 2 3 1 2 1 2 1 2 1 2 3 1 2 atan 1 2 2 3 1 2 1 2 1 2 1 2 3 1 2 atan 1 2 2 1 2 3 1 4 1 2 1 2 3 1 2 pi atan 1 2 2 1 2 3 1 4 1 2 1 2 3 1 2 pi 二 单个常微分方程求解 利用 dsovle 函数 dsovle 函数的句法 用字母D 来表示求微分 D2 D3等等表示二阶 三阶微分 并 以此来设定方程 任何D 后所跟的字母为 因变量 方程 dyx22 0用符号表达式D2y 0 来 表示 独立变量可以指定或由symvar规则选定为缺省 例1 求一阶方程dy dx 1 y 2的解 其通解为 dsolve Dy 1 y 2 find the general solution ans tan t C1 C1是积分常数 给定初值y 0 1的方程的解 dsolve Dy 1 y 2 y 0 1 add an initial condition y tan t 1 4 pi 指定独立变量 dsolve Dy 1 y 2 y 0 1 v find solution to dy dv ans tan v 1 4 pi 例2 求二阶微分方程的解 方程有两个初始条件 dyx 2 cos 2x y dyx 0 0 y 0 1 y dsolve D2y cos 2 x y Dy 0 0 y 0 1 x y 1 6 cos 3 x 1 2 cos x cos x 1 2 sin x 1 6 sin 3 x sin x 4 3 cos x 19 y simple y y looks like it can be simplified y 1 3 cos 2 x 4 3 cos x 例3 求解下列形式的微分方程 dyx2 y 0 通解为 y dsolve D2y 2 Dy 3 y 0 x y C1 exp x C2 exp 3 x 加上初始条件 y 0 0和y 1 1可得到 y dsolve D2y 2 Dy 3 y 0 y 0 0 y 1 1 x y 1 exp 1 exp 3 exp x 1 exp 1 exp 3 exp 3 x y simple y this looks like a candidate for simplification y exp x exp 3 x exp 1 exp 3 pretty y pretty it up exp x exp 3 x exp 3 exp 1 小结 下列各表综合了符号数学工具箱的特性 符号表达式的运算 eval 符号到数值的转换 Pretty 显示悦目的符号输出 Subs 替代子表达式 Sym 建立符号矩阵或表达式 Symadd 符号加法 Symdiv 符号除法 Symmul 符号乘法 Symop 符号运算 Sympow 符号表达式的幂运算 Symrat 有理近似 Symsub 符号减法 Symvar 求符号变量 符号表达式的简化 20 Collect 合并同类项 Expand 展开 Factor 因式 Simple 求解最简形式 Simplify 简化 symsum 和级数 符号多项式 Charpoly 特征多项式 Horner 嵌套多项式表示 Numden 分子或分母的提取 poly2sym 多项式向量到符号的转换 sym2poly 符号到多项式向量的转换 符号微积分 Diff 微分 Int 积分 Jordan 约当标准形 Taylor 泰勒级数展开 符号可变精度算术 Digits 设置可变精度 Vpa 可变精度计算 求解符号方程 Compose 函数的复合 Dsolve 微分方程的求解 Finverse 函数逆 Linsolve 齐次线性方程组的求解 Solve 代数方程的求解 符号线性代数 Charploy 特征多项式 Determ 矩阵行列式的值 Eigensys 特征值和特征向量 Inverse 矩阵逆 Jordan 约当标准形 Linsolve 齐次线性方程组的解 Transpose 矩阵的转置 离散信号的表示法 21 第三章 函数绘图 数据图形能使视觉感官直接感受到数据的许多内在本质 发现数据的内在联系 MATLAB 可以表达出数据的二维 三维 甚至四维的图形 第 1 节 二维图形 一 基本平面图形绘制命令 plot 功能 线性二维图 格式 plot X s X 为实向量的时候 以该向量元素的下标为横坐标 元素值为纵坐 标 绘出一条连续曲线 plot X Y X Y 为同维向量时 绘制以 X Y 元素为横 纵坐标的曲线 X 为向量 Y 为一维或多维矩阵时 绘出多条不同颜色的曲线 X 为 这些曲线共同的横坐标 plot Y Y 的维数为 m 则 plot Y 等价于 plot x Y 其中 x 1 m plot X1 Y1 X2 Y2 其中 Xi 与 Yi 成对出现 plot X1 Y1 LineSpec1 X2 Y2 LineSpec2 将按顺序分别画出由三参数定义 Xi Yi LineSpeci 的线条 其中参数 LineSpeci 指明了线条的类型 标记符 号 和画线用的颜色 可混合使用三参数和二参数的形式 plot X1 Y1 LineSpec1 X2 Y2 X3 Y3 LineSpec3 plot PropertyName PropertyValue 对图形对象中指定的属性进行设置 h plot 返回 line 图形对象句柄的一列向量 一线条对应一句柄值 允许用户对线条定义的属性 1 线型 定义符 线型 实线 缺省值 划线 点线 点划线 2 线条宽度 LineWidth 指定线条的宽度 取值为整数 单位为像素点 3 颜色 定义符 R red G green b blue c cyan 颜色 红色 绿色 兰色 青色 定义符 M magenta y yellow k black w white 颜色 品红 黄色 黑色 白色 4 标记类型 22 定义符 O 字母 x 标记类型 加号 小圆圈 星号 实点 交叉号 定义符 d v t 0 pi 20 2 pi plot t t cos t r hold on plot exp t 100 sin t pi 2 mo plot sin t pi bs hold off 例 2 t 1 0 1 10 plot t sin 2 t mo LineWidth 2 MarkerEdgeColor k MarkerFaceColor 0 49 1 0 63 MarkerSize 5 二 一元函数 y f x 的绘图命令 fplot fplot 采用自适应步长控制来画出函数 function 的示意图 在函数的变化激烈的区间 采用小的步长 否则采用大的步长 总之 使计算量与时间最小 图形尽可能精确 注意 必须是函数 可以是一个 m 文件函数或者是一个包含符号变量的函数 如 sin x exp 2 x sin x cos x 格式 fplot function limits 在指定的范围 limits 内画出一元函数图形 其中 limits 是一个指定 x 轴范围的向量 xmin xmax 或者是 x 轴和 y 轴的范围的向量 xmin xmax ymin ymax fplot function limits LineSpec 用指定的线型 LineSpec 画出函数 function fplot function limits tol 用相对误差值为 tol 画出函数 function 相对误差的 缺省值为 2e 3 fplot function limits tol LineSpec 用指定的相对误差值 tol 和指定的线型 LineSpec 画出函数 function 的图形 fplot function limits n 当 n 1 则至少画出 n 1 个点 即至少把范围 limits 分成 n 个小区间 最大步长不超过 xmax xmin n fplot function lims 允许可选参数 tol n 和 LineSpec 以任意组合方式输入 X Y fplot function limits 返回横坐标与纵坐标的值给变量 X 和 Y 此 时 fplot 不画出图形 若想画出 可用命令 plot X Y plot function limits tol n LineSpec P1 P2 允许用户直接给函数 function 输入参数 P1 P2 等 其中函数 functiond 的定义形式为 24 y function x P1 P2 若想用缺省的 tol n 或 LineSpec 值 只需将空矩阵 传递给函数即可 fplot tanh 2 2 subplot 2 2 1 fplot humps 0 1 subplot 2 2 2 fplot abs exp j x 0 9 ones 10 1 0 2 pi subplot 2 1 2 fplot tan x sin x cos x 2 pi 1 1 1 1 三 快速函数作图 ezplot Easy to use function plotter 例如 y 16 x 2 64 x 96 expression to plot y 16 x 2 64 x 96 ezplot y 图3 1 符号函数16 x 2 64 x 96 2 x 2 6 4 2 0 2 4 6 1000 800 600 400 200 0 200 x 16 x 2 64 x 96 25 图3 2 符号函数16 x 2 64 x 96 0 x 6 图3 1 ezplot 绘制了定义域为 2 x 2 的给定符号函数 如果感兴趣的时间是从 0 到6 需要指定范围 即 ezplot y 0 6 plot y for 0 x 6 函数 ezplot格式 ezplot f f x over the default domain 2pi x 2pi f x y 0 over the default domain 2pi x 2pi 2pi y 2pi ezplot f min max f x over min x max f x y 0 over min x max and min y max ezplot f xmin xmax ymin ymax f x y 0 over xmin x xmax and ymin y ymax ezplot x y x x t and y y t over the default domain 0 t 2 ezplot x y tmin tmax x x t and y y t over tmin t fplot myfun 20 20 title myfun xlabel x ylabel y 四 读取二维灰度图像 I imread E 图像 131 bmp 第 2 节 三维图形 一 三维曲线 面填色命令 命令 1 comet3 功能 三维空间中的彗星图 彗星图为一个三维的动画图像 彗星头 一个小圆圈 沿着数据指定的轨道前进 彗星体为跟在彗星头后面的一段痕迹 彗星轨道为整个函数所 画的实曲线 注意一点的是 该彗星轨迹的显示模式 EraseMode 为 none 所以用户不能 打印出彗星轨迹 只能得到一个小圆圈 且若用户调整窗口大小 则彗星会消失 用法 comet3 z 用向量 z 中的数据显示一个三维彗星 comet3 x y z 显示一个彗星通过数据 x y z 确定的三维曲线 comet3 x y z p 指定彗星体的长度为 p length y 例 7 24 t 20 pi pi 50 20 pi comet3 cos 2 t 2 sin t sin 2 t 2 cos t t 图形的结果为图 7 24 命令 2 fill3 功能 用指定的颜色填充三维多边形 阴影类型为平面型和 Gouraud 型 用法 fill3 X Y Z C 填充由参数 x y 和 z 确定多边形 若 x y 或 z 为矩阵 fill3 生 成 n 个多边形 其中 n 为矩阵的列数 在必要的时候 fill3 会自动连接最 后一个节点和第一个节点 以便能形成封闭的多边形 参数 c 指定颜色 这儿 c 为引用当前色图的下标向量或矩阵 若 c 为行向量 则 c 的维数必 须等于 x 的列数和 y 的列数 若 c 为列向量 则 c 的维数必须等于矩阵 x 的行数和 y 的行数 fill3 X Y Z ColorSpec 用指定的颜色 ColorSpec 填充由 x y 和 z 确定的多边形 fill3 X1 Y1 Z1 C1 X2 Y2 Z2 C2 对多边形的不同区域用不同的颜色进行填充 fill3 PropertyName PropertyValue 允许用户对特定的 patch 属性进行设置 h fill3 返回 patch 图形对象的句柄向量 每一块 patch 对应一个句柄 运算规则 1 若 X Y Z 为同型的矩阵 fill3 生成 X Y Z 中相同位置的元素确定的顶点 每一列生成一个多边形 图 7 24 27 2 若只有 X Y 或 Z 为矩阵 则 fill3 由列向量参数生成可用的同型矩阵 3 若用户对填充的颜色指定为 ColorSpec 则 fill3 生成阴影类型为 flat shaded 的多 边形 且设置块 patch 的属性 FaceColor 为 RGB 颜色形式的矩阵 4 若用户用矩阵 C 指定颜色 命令 fill3 通过坐标轴属性 Clim 来调整 C 中的元素 在引用当前色图之前 用于指定颜色坐标轴的参数比例 5 若参数 C 为一行向量 命令 fill3 生成带平面阴影 flat shaded 的多边形 同时 设置补片对象的面颜色 FaceColor 属性为 flat 向量 c 中的每一元素成为每一补片对象 的颜色数据 CData 属性的值 6 若参数 C 为一矩阵 命令 fill3 生成带内插颜色的多边形 同时设置多边形补片对 象的 FaceColor 属性为 interp 命令 fill3 采用对多边形顶点色图的下标指定的颜色采用线 性内插算法 同时多边形的颜色采用对顶点颜色用内插算法得到的颜色 矩阵 C 的每一列 元素变成对应补片对象的 Cdata 属性值 7 若参数 C 为一列向量 命令 fill3 先复制 C 的元素 使之成为所需维数的矩阵 再 按上面的方法 6 进行计算 例 7 25 X 10 rand 4 Y 10 rand 4 Z 10 rand 4 C rand 4 fill3 X Y Z C 图形结果可能为图 7 25 二 7 2 2 三维图形等高线 命令 1 contour 功能 曲面的等高线图 用法 contour z 把矩阵 z 中的值作为一个二维函数的值 等高曲线是一个平面的曲 线 平面的高度 v 是 Matlab 自动取的 contour x y z x y 是平面 z 0 上点的坐标矩阵 z 为相应点的高度值矩阵 效果同上 contour z n 画出 n 条等高线 contour x y z n 画出 n 条等高线 contour z v 在指定的高度 v 上画出等高线 contour x y z v 同上 c h contour 返回如同 contourc 命令描述的等高矩阵 c 和线句柄或块句 柄列向量 h 这些可作为 clabel 命令的输入参量 每条线对应一个句柄 句柄中的 userdata 属性包含每条等高线的高 度值 contour linespec 因为等高线是以当前的色 图中的颜色画的 且是作为块对象处理的 即等高线是一般的线条 我们可象画普通线 条一样 可以指定等高线的颜色或者线形 例 7 26 contour peaks 40 图形结果为图 7 26 命令 2 clabel 功能 在二维等高线图中添加高度标签 在下列形式中 若有 h 出现 则会对标签进 行恰当的旋转 否则标签会竖直放置 且在恰当的位置显示个一个 号 图 7 25 图 7 26 28 用法 clabel C h 把标签旋转到恰当的角度 再插入到等高线中 只有等高线之间有 足够的空间时才加入 当然这决定于等高线的尺度 clabel C h v 在指定的高度 v 上显示标签 h 当然要对标签做恰当的处理 clabel C h manual 手动设置标签 用户用鼠标左键或空格键在最接近指定的 位置上放置标签 用键盘上的回车键结束该操作 当然会对标签做恰当的 处理 clabel C 在从命令 contour 生成的等高线结构 c 的位置上添加标签 此时标签 的放置的位置是随机的 clabel C v 在给定的位置 v 上显示标签 clabel C manual 允许用户通过鼠标来给等高线 贴标签 例 7 27 x y meshgrid 2 2 2 z x y exp x 2 y 2 C h contour x y z clabel C h 图形结果为图 7 27 命令 3 contourc 功能 低级等高线图形计算命令 该命令计算等高线矩阵 c 该矩阵可用于命令 contour contour3 和 contourf 等 矩阵 z 中的数值确定平面上的等高线高度值 等高线的 计算结果用由矩阵 z 维数决定的间隔的宽度 用法 C contourc Z 从矩阵 z 中计算等高矩阵 其中 z 的维数至少为 2 2 阶 等高 线为矩阵 z 中数值相等的单元 等高线的数目和相应的高度值是自动选择 的 C contourc Z n 在矩阵 z 中计算出 n 个高度的等高线 C contourc Z v 在矩阵 z 中计算出给定高度向量 v 上计算等高线 当然向量 v 的维数决定了等高线的数目 若只要计算一条高度为 a 的等高线 输入 contourc Z a a C contourc x y Z 在矩阵 z 中 参量 x y 确定的坐标轴范围内计算等高线 C contourc x y Z n 从矩阵 Z 中 参量 x 与 y 确定的坐标范围内画出 n 条等高 线 C contourc x y Z v 从矩阵 Z 中 参量 x 与 y 确定的坐标范围内 画在 v 指定 的高度上指定的等高线 命令 4 contour3 功能 三维空间等高线图 该命令生成一个定义在矩形格栅上曲面的三维等高线图 用法 contour3 Z 画出三维空间角度观看矩阵 z 的等高线图 其中 z 的元素被认为 是距离 xy 平面的高度 矩阵 z 至少为 2 2 阶的 等高线的条数与高度是自 动选择的 若 m n size z 则 x 轴的范围为 1 n y 轴的范围为 1 m contour3 Z n 画出由矩阵 z 确定的 n 条等高线的三维图 contour3 Z v 在参量 v 指定的高度上画出三维等高线 当然等高线条数与向量 v 的维数相同 若想只画一条高度为 h 的等高线 输入 contour3 Z h h contour3 X Y Z contour3 X Y Z n contour3 X Y Z v 用 X 与 Y 定义 x 轴 与 y 轴的范围 若 X 为矩阵 则 X 1 定义 x 轴的范围 若 Y 为矩阵 则 Y 1 定义 y 轴的范围 若 X 与 Y 同时为矩阵 则它们必须同型 不论为 图 7 27 29 哪种使用形式 所起的作用与命令 surf 相同 若 X 或 Y 有不规则的间距 contour3 还是使用规则的间距计算等高线 然后将数据转变给 X 或 Y contour3 LineSpec 用参量 LineSpec 指定的线型与颜色画等高线 C h contour3 画出图形 同时返回与命令contourc 中相同的等高线矩阵 C 包含所有图形对象的句柄向量 h 除非没有指定LineSpec参数 contour3 将生成patch图形对象 且当前的 colormap属性与 caxis属性将控制颜色的显示 不论使用何种形式 该命令都生成line图形对 象 例 7 28 X Y meshgrid 2 25 2 Z X exp X 2 Y 2 contour3 X Y Z 30 图形结果为图 7 28 命令 5 contourf 功能 填充二维等高线图 即先画出不同等高线 然后相邻的等高线之间用同一颜色 进行填充 填充用的颜色决定于当前的色图颜色 用法 contourf Z 矩阵 z 的等高线图 其中 z 理解成距平面的高度 Z 至少为 2 2 阶 的 等高线的条数与高度是自动选择的 contourf Z n 画出矩阵 z 的 n 条高度不同的等高线 contourf Z v 画出矩阵 z 的 由 v 指定的高度的等高线图 contourf X Y Z contourf X Y Z n contourf X Y Z v 画出矩阵 z 的等高线 图 其中 X 与 Y 用于指定 x 轴与 y 轴的范围 若 X 与 Y 为矩阵 则必须 与 Z 同型 若 X 或 Y 有不规则的间距 contour3 还是使用规则的间距计 算等高线 然后将数据转变给 X 或 Y C h CF contourf 画出图形 同时返回与命令 contourc 中相同的等高线矩 阵 C C 也可被命令 clabel 使用 返回包含 patch 图形对象的句柄向量 h 返回一用于填充用的矩阵 CF 例 7 29 contourf peaks 30 20 colormap gray 图形结果为图 7 29 命令 6 pie3 功能 三维饼形图 用法 pie3 X 用 x 中的数据画一个三维饼形图 X 中的每一个元素代表三维饼形图中的一部分 pie3 X explode x 中的某一部分可以从三维饼形图中分离出来 explode 是一个 与 x 同型的向量或矩阵 explode 中非零的元素对应 x 中从饼形图中分离出 来的分量 h pie3 返回一个分量为 patch surface 和 text 图形句柄对象的向量 即 每一块对应一个句柄 注意 命令 pie3 将 x 的每一个元素在所有元素的总和中所占的比例表达出来 若 x 中 的分量和小于 1 则所有元素小于 1 则认为 x 中的值指明三维饼形图的每一部分的大小 例 7 30 图 7 28 图 7 29 图 7 30 30 x 1 3 0 5 2 5 2 ex 0 1 0 0 0 pie3 x ex 图形结果为图 7 30 三 7 2 3 曲面与网格图命令 命令 1 mesh 功能 生成由 X Y 和 Z 指定的网线面 由 C 指定的颜色的三维网格图 网格图是作 为视点由 view 3 设定的 surface 图形对象 曲面的颜色与背景颜色相同 当要动画显示 不透明曲面时 这时可用命令 hidden 控制 或者当画一个标准的可透视的网线图时 曲 面的颜色就没有 命令 shading 控制渲染模式 当前的色图决定线的颜色 用法 mesh X Y Z 画出颜色由 c 指定的三维网格图 所以和曲面的高度相匹配 1 若 X 与 Y 均为向量 length X n length Y m 而 m n size Z 空间中的点 X j Y I Z I j 为所画曲面网线的交点 分别地 X 对应于 z 的列 Y 对应于 z 的行 2 若 X 与 Y 均为矩阵 则空间中的点 X I j Y I j Z I j 为所画曲面 的网线的交点 mesh Z 由 n m size Z 得 X 1 n 与 Y 1 m 其中 z 为定义在矩形 划分区域上的单值函数 mesh C 用由矩阵 c 指定的颜色画网线网格图 Matlab 对矩阵 c 中的数据 进行线性处理 以便从当前色图中获得有用的颜色 mesh PropertyName PropertyV
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 办公文档 > 解决方案


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

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


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