首页 matlab简介

matlab简介

举报
开通vip

matlab简介Matlab简介 MATLAB软件的名字是由Matrix(矩阵)和Laboratory(实验室)两个单词的前三个字母组合而成。它是美国MathWorks公司出品的商业数学软件,用于算法开发、数据可视化、数据分析以及数值计算的高级技术计算语言和交互式环境。 20世纪70年代,时任美国新墨西哥大学计算机科学系主任Cleve Moler为了减轻学生编程的负担,用FORTRAN编写了一组调用LINPACK和EISPACK矩阵软件工具包库程序的“通俗易用”的接口,这就是最早的MATLAB。 1984年由Little、Mo...

matlab简介
Matlab简介 MATLAB软件的名字是由Matrix(矩阵)和Laboratory(实验室)两个单词的前三个字母组合而成。它是美国MathWorks公司出品的商业数学软件,用于算法开发、数据可视化、数据分析以及数值计算的高级技术计算语言和交互式环境。 20世纪70年代,时任美国新墨西哥大学计算机科学系主任Cleve Moler为了减轻学生编程的负担,用FORTRAN编写了一组调用LINPACK和EISPACK矩阵软件工具包库程序的“通俗易用”的接口,这就是最早的MATLAB。 1984年由Little、Moler、Steve Bangert合作成立了的MathWorks公司,并且正式把MATLAB推向市场。从此时起,采用了C语言来编写MATLAB的内核,除了原有数值计算能力外,还新增了数据图视功能。 到20世纪90年代,MATLAB已成为国际控制界的标准计算软件。现今的MATLAB拥有更丰富的数据类型和结构、更友善的面向对象、更加快速精良的图形可视、更广博的数学和数据分析资源、更多的应用开发工具。 Desktop操作桌面简介 启动后默认界面如下图。 Command Window 该窗口是进行Matlab各种操作的主要窗口。在该窗内可以输入各类指令、函数、 关于同志近三年现实表现材料材料类招标技术评分表图表与交易pdf视力表打印pdf用图表说话 pdf 达式;显示除了图形外所有的运算结果,错误时,给出相关出错提示。 图 1.3-1 几何独立的指令窗 【例】求 的算术运算结果。 (1)键盘输入: (12+2*(7-4))/3^2 (2)输完后,按回车键【Enter】执行该指令,显示结果如下: ans = 2 【说明】指令输入完后只有按回车键【Enter】才能执行;如果输入的指令不含赋值号,计算结果被赋于默认的变量ans。 数值、变量和表达式 数值的记述:数值采用“占64位内存的双精度”表示。其相对精度为eps,大约保持有效数字16位。数值范围在 之间。 变量命名规则:变量名和函数名对大小写敏感;变量第一个字符必须是英文字母,最多包含63个字符(英文、数字和下划线),不能包括空格、标点、运算符;不能使Matlab的关键词和自用的变量名(eps,pi等)函数名(sin,exp等)、文件夹名(rwt,toolbox等)。 Matlab默认的数学常数 MATLAB为数学常数预定义的变量名 预定义变量 含 义 预定义变量 含 义 eps 浮点数相对精度 NaN或nan 不是一个数(Not a Number) 如 i 或 j 虚数单位 Inf或inf 无穷大,如 pi 圆周率 intmax 可表达的最大整数 默认2147483647 realmax 最大正实数 默认 intmin 可表达的最小整数默认默认-2147483647 realmin 最小正实数 默认 【说明】预定义变量可被重新赋值;允许被0除,用NaN或Inf表示,不会导致程序中断,会有警告信息提示。 运算符和表达式 MATLAB表达式的基本运算符 数学表达式 矩阵运算符 数组运算符 加 a + b a + b 减 a - b a - b 乘 a * b a .* b 除 a / b 或 b \ a a ./ b 或 b .\ a 幂 a ^ b a .^ b 圆括号 ( ) ( ) ( ) 【说明】运算定义在复数域,对于方根问题,默认只返回一个主解;面向矩阵和数组设计,标量被看做 的矩阵或数组;数组运算的“乘 除 幂”运算,符号前有小黑点;除法分左除'\'和右除'/',意义不同,斜线倾向于谁,谁被除。 5/3 5\3 左除'\'和右除'/'优先级相同,从左往右进行。 面向复数设计的运算 real(z): 复数z的实部 imag(z): 复数z的虚部 abs(z): 复数z的模 angle(z): 复数z的幅角(弧度) 【例】对复数数组 进行求实部、虚部、模和幅角的运算。 (1) AR=[1,3;2,4];AI=[5,7;6,8]; A=AR-AI*i (2) A_real=real(A) A_image=imag(A) (3) Am2=abs(A) Aa2=angle(A)*180/pi 默认的输入显示方式 控制流关键字if, for, end等用蓝色字体表示;输入指令中的非控制指令、数字显示为黑色字体;字符串显示为紫色字体;注释为绿色字体;警告信息为红色字体。 运算结果的显示 常见数字输出结果为5位有效数字,这是“双精度”数据的默认输出格式。 指 令 含 义 举 例 说 明 format format short 通常保证小数点后四位有效,最多不超过7位;对于大于1000的实数,用5 位有效数字的科学记数形式显示。 format long 小数点后15 位数字表示 format short e 5 位科学记数表示 format long e 15 位科学记数表示 format short g 从format short 和format short e中自动选择最佳记数方式 format long g 从format long 和format long e中自动选择最佳记数方式 format rat 近似有理数表示 format hex 十六进制表示 format + 显示大矩阵用。正数、负数、零 分别用 + , - , 空格表示。 format bank (金融)元、角、分表示 format compact 显示变量之间没有空行 format loose 在显示变量之间有空行 【说明】format short为默认显示格式。其余格式在设置后起效,Matlab重启后恢复默认显示格式。 指令行中的标点符号 MATLAB常用标点的功能 名 称 标 点 作 用 空格 输入量之间分隔;数组元素间分隔 逗号 , 显示计算结果与其后指令间分隔; 输入量之间分隔;数组元素间分隔 黑点 . 数值计算中的小数点;用在运算符前表示“数组”运算符 分号 ; 指令结尾,不显示结果;不显示计算结果与其后指令间分隔;数组行间分隔符 冒号 : 生成一维数组;单下标援引时表示全部元素构成的长列;多下标援引时表示该维上全部元素 注释号 % 由其“起首”的行为非执行的注释行 单引号对 ' ' 字符串记述符 圆括号 ( ) 改变运算次序;数组援引时使用;函数输入宗量列表时用 方括号 [ ] 输入数组时;函数输出宗量列表时用 花括号 { } 胞元数组记述符;图形中被控特殊字符括号 赋值号 = 下连符 _ 变量、函数、文件夹的连字符;图形中被控下脚标前导符 续行号 ... “At”号 @ 函数名前,形成函数句柄;匿名函数前导符;放在目录名前,形成“用户对象”类目录 惊叹号 ! 【说明】符号为英文状态下输入。 指令窗的常用控制指令 常见的通用操作指令 指令 含 义 指令 含 义 ans 最新计算结果的默认变量名 edit 打开M文件编辑器 cd 设置当前工作目录。 exit 关闭/退出 MATLAB clf 清除图形窗 help 在指令窗中显示帮助信息 clc 清除指令窗中显示内容 more 使其后的显示内容分页进行 clear 清除MATLAB工作空间中保存的变量 quit 关闭/退出 MATLAB dir 列出指定目录下的文件和子目录清单 return 返回到上层调用程序;结束键盘模式 doc 在MATLAB浏览器中,显示帮助信息 type 显示指定M文件的内容 diary 把指令窗输入记录为文件 which 指出其后文件所在的目录 指令窗中指令行的编辑 MATLAB 指令窗中实施指令行编辑的常用操作键 键名 作 用 键名 作 用 ( 前寻式调回已输入过的指令行 Home 使光标移到当前行的首端 ( 后寻式调回已输入过的指令行 End 使光标移到当前行的尾端 ( 在当前行中左移光标 Delete 删去光标右边的字符 ( 在当前行中右移光标 Backspace 删去光标左边的字符 PageUp 前寻式翻阅当前窗中的内容 Esc 清除当前行的全部内容 PageDown 后寻式翻阅当前窗中的内容 【说明】指令窗中输入的指令被显示在“历史指令浏览器中”,如不专门清除,一直被保存。 Current Folder当前目录简介 用户目录和当前目录设置 Matlab的搜索路径 工作空间浏览器和变量编辑器 工作空间浏览器及“绘图工具”图标的展开 工作空间浏览器主要功能及其操作方法 功 能 操 作 方 法 新变量创建 单击该图标,在工作空间产生unnamed新变量;双击该变量,引出Variable Editor变量编辑器;可输入数据;可重新命名 变量内容显示 选中变量,点击该图标,则变量内容显示在Variable Editor变量编辑器中 向内存装载文件数据 选择MAT数据文件,单击该图标,引出Import Wizard界面,选择需要装载的数据 把变量保存进文件 选择一个或多个内存变量,单击该图标或单击右键,选择Save as,把这些变量保存到MAT数据文件 图形绘制启动键 绘制选定类型的图形 绘图类型菜单引出键 点击引出绘图类型菜单以供选择 工作空间的管理指令 查询指令who及whos 【例1.7】在指令窗中运用who, whos查阅MATLAB内存变量。 who whos 从工作空间中删除变量和函数的指令 clear 清除工作空间中的所有变量 clear var1 var2 清除工作空间中的变量var1和var2 clear all 清除工作空间中的所有变量、全局变量、编译过的M函数和MEX链接 clear fun1 fun2 清除工作空间中名为fun1和fun2的函数 整理工作空间内存碎片的指令 pack 存取数据的操作指令save 和load save FileName 把全部内存变量保存为Filename.mat文件 save FileName v1 v2 把变量v1和v2保存为Filename.mat文件 save FileName v1 v2 -append 把变量v1和v2添加到Filename.mat文件 save FileName v1 v2 -ascii 把v1, v2保存为Filename8位ASCII文件 save FileName v1 v2 -ascii -double 把v1 , v2保存为Filename16位ASCII文件 load FileName 把Filename.mat文件中全部变量调入内存 load FileName v1 v2 把Filename.mat文件中v1 , v2调入内存 load FileName v1 v2 -ascii 把Filename ASCII文件中v1 , v2调入内存 【说明】Filename可带路径和扩展名;有-ascii,则保存为ASCII格式,可以再任何编辑文件中修改;没有-ascii,则保存为二进制格式文件,扩展名为mat。 符号计算 符号对象和符号表达式 Matlab依靠基本符号对象(数字、参数、变量)、运算符以及一些预定义函数来构造和衍生符号表达式、符号方程。 生成符号对象的基本规则:任何基本符号对象(数字、参数、变量、表达式)必须由符号函数指令sym或syms定义;任何包含符号对象的表达式、方程也是符号对象。 符号数字和符号常数 在有限字长的计算机中,数值不能始终保持准确,在符号运算中,需要参与计算的数字完全准确。 sym('Num') 创建一个符号数字Num(在符号表达中使用) sc=sym('Num') 创建一个符号常数sc,该常数的准确值为Num 注:Num为一个具体数字;且处于英文状态下的单引号内。 【例】符号(类)数字和数值(类)数字的差异 clear a=sin(3/10) sa=sym('sin(3/10)') 基本符号变量 在Matlab中,a,b,x均被称为“基本符号变量”,在对符号表达式求解、绘图时,如果不做专门的假设,x总被认为是“待解符号变量”或“自由符号变量”,其余符号变量作为“符号参数”处理。 基本符号变量的指令格式 para=sym('para') 定义单个复数域符号变量para para=sym('para','Flag') 定义单个Flag指定域符号变量para syms para 定义单个复数域符号变量para另一形式 syms para Flag 定义单个Flag域符号变量para另一形式 syms para1 para2 paraN 定义多个复数域符号变量para1 para2 paraN syms para1 para2 paraN Flag 定义多个Flag域符号变量para1 para2 paraN 注:Flag指定域可以使real(实数域),positive(正实数域),多个变量间用空格分隔。 自由符号变量 解题时,自由符号变量可以认为设定,也可以由软件“默认设置”。默认规则为:在没有专门指定变量名的符号运算中,Matlab将按照与小写字母x的ASCII码距离自动识别自由符号变量。即符号计算中,x时首选的自由符号变量,其后的次序排列规则为与x的ASCII码值之差的绝对值小的字母优先,绝对值相同的,ASCII码值大的字母优先。 symvar(expression) 列出表达式中的基本符号变量(按字母顺序) symvar(expression,n) 列出表达式中认定的前n个自由符号变量 【例】 (1)产生符号表达式 syms u v w z a5 f=sym('3'); Eq=sin(f)*u*z^2+v*z+f*w-a5; (2)基本符号变量和自由符号变量的认定 symvar(Eq) %观察是否有f ans = [ a5, u, v, w, z] symvar(Eq,100) ans = [ w, z, v, u, a5] symvar(Eq,1) ans = w (3)求解关于自由符号变量方程 result_1=solve(Eq) result_1 = a5/3 - (v*z)/3 - (u*z^2*sin(3))/3 (4)指定待解变量 result_2=solve(Eq,z) result_2 = -(v + (v^2 + 4*a5*u*sin(3) - 12*u*w*sin(3))^(1/2))/(2*u*sin(3)) -(v - (v^2 + 4*a5*u*sin(3) - 12*u*w*sin(3))^(1/2))/(2*u*sin(3)) 符号计算中的算符 基本运算符 + - * \ / ^ :加 减 乘 左除 右除 幂 .* .\ ./ .^:数组对应元素间的乘、除、幂 ' .':矩阵的共轭转置、非共轭转置 关系运算符 符号对象比较中没有“大于”,“大于等于”,“小于”,“小于等于”的概念。 = = ~=:表示算符两边的对象“相等”或“不相等”。若事实为“真”返回1;事实为“假”,返回0。 符号运算机理和变量假设 Matlab的符号计算是由MuPAD引擎在其专有的内存工作空间中执行,仅把计算结果送回Matlab的内存空间(WorkSpace)。 符号数字及表达式的操作 双精度数字向符号数字的转换 利用sym函数将双精度类数字转换为符号数字。指令格式 S = sym(Num, flag) 把一个数值标量或矩阵转换为符号型的对象。有如下5种形式: sym(Num,'r') 双精度数字Num的“有理分数”表示的符号数字 sym(Num) sym(Num)的简写 sym(Num,'f') 双精度数字Num的“十六进制”近似表达的符号数字 sym(Num,'e') 双精度数字Num的带估计误差的“广义有理表达”符号数字 sym(Num,'d') 双精度数字Num的“十进制浮点”近似表达的符号数字(32位) 【说明】Num是数值数字;注意sym('Num')和sym(Num)的区别,'Num'是数字字符串,表示理论真值,Num表示数字,默认为其双精度近似值;符号运算中,“双精度数字”自动按照sym(Num,'r')转换为符号数字。 符号数字向双精度数字转换 double(Num_sym) 把符号数字Num_sym转化为双精度数字 【说明】double('Num')与double(Num)的区别。前者把字符串'Num'转换为字符的ASCII码值数组。 double('13') double(13) 符号数字的任意精度表达形式 数值运算,产生阶段误差且会累积;符号计算,数值完全准确,且不产生累积,但是以降低运算速度慢和增加内存需求为代价。 digits 显示当前环境下符号数字“十进制浮点”表示的有效数字位数 digits(n) 设定符号数字“十进制浮点”表示的有效数字位数(默认32位) xs=vpa(x) 据表达式x得到digits指定精度下的符号数字xs xs=vpa(x,n) 据表达式x得到n位有效数字的符号数字xs 【说明】vpa函数运算精度受digits函数控制;vpa(x,n)仅在运行当时起作用,x为符号字符,也可为数值,运行结果xs为符号数字。 符号表达式的基本操作 collect(合并同类项)、expand(对指定项展开)、factor(进行因式分解)、horner(转换成嵌套形式)、numden(提取公因式)、simplify(恒等式简化)、pretty(习惯方式显示)、coeffs(获取符号多项式系数)等。最常用: simple(EXPR) 把EXPR转换成最简形式 表达式中的置换操作 公因子法简化表达 RS=subexpr(S) 从S中自动提取公因子sigma,并用sigma重写S为RS RS=subexpr(S,'w') 从S中自动提取公因子即为w,并用w重写S为RS [RS,w]=subexpr(S,'w') 调用与RS=subexpr(S,'w')相同,均返回RS和w。 通用置换指令 RES=subs(ES,old,new) 用new置换ES中的old后产生RES RES=subs(ES,new) 用new置换ES中的自由变量后产生RES subs输出结果取决于new的属性。 符号微积分 极限和导数的符号计算 limit(f,x,a) 求极限 limit(f,x,a,'left') 求左极限 limit(f,x,a,'right') 求右极限 diff(f,x,n) 求f关于变量x的n阶导数 taylor(f,x,a,'Order',n) 将函数f(x)在 处展为 【说明】x缺省时,自变量由symvar自动确认,a缺省时默认为0,n缺省时默认为1;f为矩阵时,求极限和求导对元素操作;但自变量定义在整个矩阵上;diff在数值运算中用来求差分。 【例】极限 syms x n limit(sin(x)/x,x,0) limit((1+1/n)^n,n,inf) limit(exp(1/x),x,0,'left') limit(exp(1/x),x,0,'right') 【例】导数 syms x y D1=diff(exp(x*y)) D2=diff(exp(x*y),y,2) D3 = diff(diff(exp(x*y),y,2),x,3) 【例】求 在 处展开的8阶Maclaurin公式。 r=taylor(x*exp(x),x,0,'Order',9) 序列/级数的符号求和 symsum(f,v,a,b) 求f在指定变量v取遍[a,b]中所有整数时的和 【说明】f为矩阵时,求和对元素逐个进行,但自变量定义在整个矩阵上;v缺省时,f中的自由变量由symvar自动确认;b可取有限整数,也可取无穷大;a, b同时缺省时,默认求和区间为[0,v-1]。 【例】 (1)有限项求和 。 syms n k f1=1/(k*(k+1)); s1=symsum(f1,k,1,n) s11=symsum(f1,k,1,inf) (2)无限项求和 , 。 syms x k f2=x^(2*k-1)/(2*k-1); s2=symsum(f2,k,1,inf) 符号积分 int(f,v) 给出f对指定变量v的(不带积分常数)的不定积分 int(f,v,a,b) 给出f对指定变量v在[a,b]区间上的定积分 【例】求定积分 , , 。 clear syms x f1=x*log(x) s1=int(f1,x) s1=simple(s1) s2=int(f1,'a','b') s3=int(f1,1,2) 【例】求 。 syms a b x t f2=[a*t,b*x^2;1/x,sin(x)] INTf2=int(f2) pretty(INTf2) 【例】求三次积分 。 syms x y z F2=int(int(int(x^2+y^2+z^2,z,sqrt(x*y),x^2*y),y,sqrt(x),x^2),x,1,2) VF2=vpa(F2) 微分方程的符号解法 求微分方程符号解的一般指令 常用格式: S=dsolve('eq1,eq2,…,eqn','cond1,cond2,…,condn','v') S=dsolve('eq1','eq2',…,'eqn','cond1','cond2',…,'condn','v') 【说明】输入包括三个部分:微分方程,初始条件,指定独立变量,微分方程部分必不可少,其余两部分可以忽略,输入量必须是字符串; 如不指定独立变量,默认为小写英文字母t; 用“Dny”表示“y的n阶导数”; 输出量S是“结构对象”,如果y是因变量,那么关于它的解在S.y中。 若找不到“显式解”也找不到“隐式解”时,给出警告信息,S为空符号对象。 【例】求 的解。 clear all S=dsolve('Dx=y,Dy=-x') disp(' ') disp(['微分方程的解',blanks(2),'x',blanks(22),'y']) disp([S.x,S.y]) 【说明】注意clear命令,如没有,任意常数的表示可能会不同;输入应遵循“导数在前函数在后,导数阶次递减”的次序,否则可能出错。 【例】求两点边值问题: 。 求解边值问题 y=dsolve('x*D2y-3*Dy=x^2','y(1)=0,y(5)=0','x') y = (31*x^4)/468 - x^3/3 + 125/468 【例】求常微分方程 的通解。 dsolve('D2y-2*Dy+5*y=exp(x)*sin(2*x)','x') 【例】求常微分方程组 的通解。 [x,y]=dsolve('Dx=y+1,Dy=x+1','t') 符号矩阵分析和代数方程解 常用指令: det(A) 方阵A的行列式的值 diag(A) 取矩阵A对角元构成向量,或由向量A构成对角阵 [D,V]=eig(A) 特征值分解,AV=VD,V特征值,D特征向量 inv(A) 逆矩阵 poly(A) 矩阵A的特征多项式 rank(A) 矩阵A的秩 rref(A) 矩阵A的行阶梯矩阵 tril(A) 矩阵A的下三角阵 triu(A) 矩阵A的上三角阵 【例】求矩阵 的行列式、逆和特征根。 (1)符号矩阵的行列式和逆 syms a11 a12 a21 a22 A=[a11,a12;a21,a22] DA=det(A) IA=inv(A) (2)借助公因子表达符号矩阵的特征值 EA=subexpr(eig(A),'D') D = (a11^2 - 2*a11*a22 + a22^2 + 4*a12*a21)^(1/2) EA = a11/2 + a22/2 - D/2 a11/2 + a22/2 + D/2 线性方程组的符号解 【例】求线性方程组 的解。 (1)采用左除“\”符号 A=sym([1 1/2 1/2 -1;1 1 -1 1;1 -1/4 -1 1;-8 -1 1 1]); b=sym([0;10;0;1]); X1=A\b (2)利用solve函数求解 eq1=sym('d+n/2+p/2-q'); eq2=sym('d+n-p+q-10'); eq3=sym('d-n/4-p+q'); eq4=sym('-8*d-n+p+q-1'); S=solve(eq1,eq2,eq3,eq4,'d','n','p','q'); disp([' d',' n',' p',' q']) disp([S.d,S.n,S.p,S.q]) d n p q [ 1, 8, 8, 9] 一般代数方程组的解 一般方程包括线性(Linear),非线性(Nonlinear)和超越方程(Transcedental)等。语法规则如下: S=solve('eq1','eq2',…,'eqn','v1','v2',…,'vn') 求方程组关于指定变量的解 S=solve(exp1,exp2,…,expn,v1,v2,…vn) 求方程组关于指定变量的解 【说明】'eq1','eq2',…,'eqn'为字符串表达式或字符串表示的方程,'v1','v2',…,'vn'为指定的求解变量名;exp1,exp2,…,expn,为符号表达式(不能有等号),v1,v2,…vn为指定的求解变量名;'eq1','eq2',…,'eqn'可不含等号,默认等于0;解S为构架数组;若不存在符号解,又不存在其他不确定参数时,给出数值解。 【例2.6-4】求方程组 关于 的解。 S=solve('u*y^2+v*z+w=0','y+z+w=0','y','z') disp('S.y'),disp(S.y),disp('S.z'),disp(S.z) 【说明】 (1)一些正确的调用格式: S=solve('u*y^2+v*z+w=0','y+z+w=0','z','y') S=solve('u*y^2+v*z+w','y+z+w','y,z') S=solve('u*y^2+v*z+w','y+z+w','z,y') syms y z u v w, S=solve(u*y^2+v*z+w,y+z+w,z,y) [y,z]=solve('u*y^2+v*z+w=0','y+z+w=0','y','z') %输出宗量顺序正确,结果才能正确 以下导致混乱(主要是输出宗量列表顺序): [z,y]=solve('u*y^2+v*z+w=0','y+z+w=0','y','z') [z,y]=solve('u*y^2+v*z+w=0','y+z+w=0','y,z') (2)如果不指定变量,按照symvar或findsym默认变量确定。 [y,z]=solve('u*y^2+v*z+w=0','y+z+w=0') % y,z其实为w,y的解 S=solve('u*y^2+v*z+w=0','y+z+w=0') 以上两个指令解出的是关于w,y的解。 【例】求解“欠定”方程组 的解。 syms d n p q eq1=d+n/2+p/2-q;eq2=n+d+q-p-10;eq3=q+d-n/4-p; S=solve(eq1,eq2,eq3,d,n,p,q); disp([' S.d',' S.n',' S.p',' S.q']) disp([S.d,S.n,S.p,S.q]) 【例】求 的解。 clear all, syms x; s=solve('(x+2)^x=2','x') xs=(s+2)^s 符号计算结果的可视化 途径一:利用计算获得的符号表达式直接绘图 途径二:根据计算获得的符号表达式或符号数值结果,转换为数值数据,再利用数值绘图指令绘图。 直接可视化符号表达式 适用于多种类型函数:符号函数、字符串函数、M文件函数和句柄函数。此类函数以ez开头,意为Easy to。 ezcontour 绘制等位线 ezcontourf 绘制填色等位线 ezmesh 绘制网格线 ezmeshc 绘制带等位线的网格线 ezplot 绘制二维图形 ezplot3 绘制三维图形 ezpolar 绘制极坐标图 ezsurf 绘制曲面图 ezsurfc 绘制带等位线曲面图 单独立变量符号函数的可视化 ezplot(Fx,[xmin,xmax]) 在指定的x范围内绘制 的平面曲线 ezplot(Fxy,[xmin,xmax,ymin,ymax]) 在指定的x,y范围内绘制 的平面曲线 ezplot(xt,yt,[tmin,tmax]) 在指定的t范围内绘制 的平面曲线 ezplot3(xt,yt,zt,[tmin,tmax]) 在指定的t范围内绘制三维空间曲线 【说明】输入函数必须有一个独立自由变量; 第一种格式,x范围如不设定,默认为 ;第二种格式,x,y范围如不设定,默认为 ,第三和第四种格式,t范围如不设定,默认为 ; ezplot自动把绘制函数和自变量分别标为图名和横坐标,可以用title和xlable改写;ezplot不能设定曲线颜色,线型,可用set设置;不能同时绘制多条曲线,可采取措施实现。 【例】绘制 在 间的图形。 syms t tao y=2/3*exp(-t/2)*cos(sqrt(3)/2*t) ezplot(y,[0,4*pi]), ylim([-0.2,0.7]) 螺旋线:ezplot3(cos(t),sin(t),t,[0,6*pi]) 单位圆:ezplot('1-x^2-y^2',[-1,1,-1,1]);axis equal 双独立变量符号函数的可视化 ezsurf(Fxyz,dom_f) 绘制矩形区域上的二元函数F(x,y,z)=0的曲面 ezsurf(Fxyz,dom_f,'circ') 绘制圆形区域上二元函数F(x,y,z)=0的曲面 ezsurt(x,y,z,dom_st,ngrid) 绘制矩形区域上的参数曲面x=x(s,t),y=y(s,t),z=z(s,t) ezsurf(x,y,z,dom_st,'cric') 绘制圆形区域上的参数曲面x=x(s,t),y=y(s,t),z=z(s,t) 【说明】输入函数必须有两个独立自由变量; dom_f取[a,b]时表示 ,dom_f取[a,b,c,d]时表示 ,dom_st取[a,b]时表示 ,dom_st取[a,b,c,d]时表示 ;若缺省均在 间。 ngrid指定绘图格点数,默认60,数值越大图形越精细; 'circ'指定在圆形区域绘图,圆域为极坐标系,圆心在 ,半径为 ; ezsurf自动标示图名,轴名,可用title和xlable修改。 球面:ezsurf('sin(s)*cos(t)','sin(s)*sin(t)','cos(s)',[0,pi],[0,2*pi]) 环面:ezsurf('(3+0.5*cos(s))*cos(t)','(3+0.5*cos(s))*sin(t)','0.5*sin(s)',[0,2*pi],[0,2*pi]) 圆锥面:ezsurf('sqrt(x^2+y^2)',[-1,1,-1,1],'circ') 【注意】使用axis equal使得坐标轴刻度相同。 【例】使用球面坐标参量绘制部分球壳。 clf x='cos(s)*cos(t)'; y='cos(s)*sin(t)'; z='sin(s)'; ezsurf(x,y,z,[0,pi/2,0,3*pi/2]) view(17,40) %观察视角控制 shading interp %色彩处理 colormap(spring) %绘图色图设置 light('position',[0,0,-10],'style','local') %灯光控制 light('position',[-1,-0.5,2],'style','local') material([0.5,0.5,0.5,10,0.3]) %曲面质感控制 图 2.8-2 ezsurf在参变量格式下绘制的图形 【说明】shading用来处理色彩,默认为faceted;flat在faceted的基础上去掉网格线,interp在flat基础上进行插值处理,使得色彩过渡平滑。 数值数组及向量化运算 为适应科学计算和向量化编程的需要,MATLAB为这种复数阵列设计了两套不同的运算规则:矩阵运算规则和数组运算规则。 矩阵、数组及向量化编程 Matlab(Matrix Laboratory),其中Matrix可以广义理解为“阵列”,涵盖了“矩阵和数组”。设计两套不同的运算规则:矩阵运算规则和数组运算规则。主要因其运算规则不同。 矩阵概念 概念与代数中的矩阵概念完全一致。 四种形式,方阵、行向量、列向量、标量。 矩阵运算规则 矩阵有关的运算,多数采用“循环”处理,缺点是:程序编写繁琐;可读性差;运行效率低。 Matlab以“矩阵”为基本运算单元,可以克服上述缺点。 操纵 矩阵加减 A+B A-B 标量与矩阵加减 b+A b-A 矩阵乘积 A*B 标量与矩阵乘积 b*A 矩阵的(共轭)转置 A.'(A') 方阵的求逆 inv(A) 方阵的幂 A^m 【例3.2-1】已知矩阵 ,采用两种不同的编程求这两个矩阵的乘积 。 (1)以“标量”为基本处理单元求矩阵的乘积(循环) clear rng('default') %随机数生成器设置为默认 A=rand(2,3); B=rand(3,4); C1=zeros(size(A,1),size(B,2)); tic for ii=1:size(A,1) %三重循环 for jj=1:size(B,2) for k=1:size(A,2) C1(ii,jj)=C1(ii,jj)+A(ii,k)*B(k,jj); end end end toc C1 (2)直接计算 tic C2=A*B toc (3 )计算结果比较 C1_C2=norm(C1-C2) %norm矩阵的2范数(默认),可选1(列),inf(行) 数组概念及数组运算规则 数组概念 每次调用指令可以处理“存储在一起的任意多个标量的矩形阵列集合体。”Matlab把服从表3.2-4和表3.2-5所列运算规则的阵列集合体,称为数组(Array)。 数组可以是一维数组、二维数组、三维数组,以致更高维数组。矩阵只有二维。 Matlab中测量数组维度(Dimension)的函数时ndims(A);测量数组规模的指令是size(A)。 数组元素的编址(Element Indexing)可采用“全下标(Multidimensional array subscripts)”编址,也可采用“单下标(Single Index)”,也称为“线性编址Linear Index”。 数组运算规则 同维同规模数组之间的(加减乘除幂)运算,为元素间的运算。标量与数组之间的(加减乘除幂)运算,为标量和数组元素之间的运算。初等函数与数组的运算,为初等函数对数组元素的运算。 数组运算符由常规运算符加小黑点“.”构成。如下表: 数组运算符和矩阵运算符 加 减 乘 左除 右除 求幂 数组运算符 .+ .- .* .\ ./ .^ 矩阵运算符 + - * \ / ^ 向量化编程 向量化编程是Matlab编程的精粹,是M码与其他语言程序的标志性差异。 (1)传统编程中的三种运算模式 个别的无规律的数据所执行的函数关系运算,程序通常是不在循环体内的标量表达式运算; 一组有规律数据需要反复执行的函数关系运算,程序一般为包含标量表达式计算的循环体; 一组有规律数据按照矩阵运算法则执行的运算,程序一般为包含标量表达式计算的一重或多重循环体。 (2)向量化(Vectorizing)编程 采用“数组运算”模式处理那些借助循环而反复执行的标量运算; 采用“向量或矩阵运算”模式处理传统上需要依靠多重循环标量运算完成的“矩阵运算”。 【例 3.2-3】欧姆定律: ,其中 分别是电阻(欧姆)、电压(伏特)、电流(安培)。验证实验:据电阻两端施加的电压,测量电阻中流过的电流,然后据测得的电压、电流计算平均电阻值。(测得的电压电流具体数据见下列程序)。 (1)非向量化编程 clear V=[0.89,1.20,3.09,4.27,3.62,7.71,8.99,7.92,9.70,10.41]; I=[0.028,0.040,0.100,0.145,0.118,0.258,0.299,0.257,0.308,0.345]; L=length(V); for k=1:L r1(k)=V(k)/I(k); end sr=0; for k=1:L sr=sr+r1(k); end r1=sr/L r1 = 30.5247 (2)向量化编程 rL=V./I r2=mean(rL) rL = Columns 1 through 6 31.7857 30.0000 30.9000 29.4483 30.6780 29.8837 Columns 7 through 10 30.0669 30.8171 31.4935 30.1739 r2 = 30.5247 数值数组的创建和寻访 递增/减型行(列)数组的创建 特点:数组数值递增或递减,元素之间等步长。主要用作函数的自变量,例如for循环中的自变量。 (1)“冒号”生成法 x = a : inc : b 【说明】inc可正可负,缺省时为1。 (2)线性(对数)生成法 x = linspace ( a , b , n ) 以a,b为端点产生线性等间距的行数组 x = logspace ( a , b , n ) 以a,b为端点产生对数等间距的行数组 【说明】n为采样点总数,即数组长度;n默认为100。 其他类型行(列)数组的创建 【例】一维数组的常用创建方法举例。 a1=1:6 a2=0:pi/4:pi a3=1:-0.1:0 b1=linspace(0,pi,4) b2=logspace(0,3,4) c1=[2 pi/2 sqrt(3) 3+5i] rng default c2=rand(1,5) 二维数组的创建 小规模数组的直接输入法 规则:整个数组用[]包括;行与行间用分号“;”或回车分隔;元素间用逗号“,”或空格分隔。 【例3.3-2】在MATLAB环境下,用下面三条指令创建二维数组C。 a=2.7358; b=33/79; C=[1,2*a+i*b,b*sqrt(a);sin(pi/4),a+5*b,3.5+i] Matlab提供许多生成特殊数组的函数。 标准数组生成函数 指 令 含 义 指 令 含 义 diag 产生对角数组(二维) ones 产生全1数组\矩阵 eye 产生单位数组(二维) zeros 产生全0数组\矩阵 magic 产生魔方数组(二维) rand 产生均匀分布随机数 random 产生各种随机分布数组 randn 产生正态分布随机数 randsrc 在指定字符集上产生均布随机数组 gallery 产生各种用途的测试数组\矩阵 二维数组元素的编址和寻访 二维数组元素的编址 (1)全下标编址(Subscripts) 由元素在数组中的行序号和列序号数对(i,j)唯一标示元素。 (2)单序号编址(Single Index) 单一序号编址,按列计算。 . 二维数组元素的寻访 (1)全下标寻访法 (2)单序号寻访法 (3)逻辑寻访法 子数组寻访格式汇总 格 式 全下标 寻访格式 A(r,c) A的“r指定行,c指定列”上的元素 A(r,:) A的“r指定行,全部列”上的元素 A(:,c) A的“全部行,c指定列”上的元素 单序号 寻访格式 A(:) A的“单序号全部元素”生成的列向量 A(ind) “单序号”寻访,生成ind一维数组(由ind的行或列确定输出形式)。 逻辑 寻访格式 A(L) “逻辑1”寻访,生成一维列数组,由于A数组同规模的“逻辑数组”L的1元素选出A的对应元素,按单序号排列。 数组构作技法综合 数组操作函数 指 令 含 义 diag 提取对角元;或生成对角矩阵 repmat 按指定的行数、列数铺放模块数组,以形成更大数组 reshape 在元素总数不变的前提下,改变数组的行数、列数 flipud 以数组水平中线为对称轴,上下交换元素位置 fliplr 以数组垂直中线为对称轴,左右交换元素位置 rot90 数组逆时针旋转90度 【例 】数组操作函数reshape, diag, repmat的用法;空阵 [ ] 删除子数组的用法。 a=1:8 A=reshape(a,4,2) A=reshape(A,2,4) b=diag(A) % B=diag(b) D1=repmat(B,2,4) D1([1,3],: )=[ ] 关系操作 关系操作符: > 大于 >= 大于等于 < 小于 <= 小于等于 == 等于 ~= 不等于 标量可与任何维数组(元素)进行比较,返回结果与数组同维;相同维数组可比较,返回同维逻辑数组。 逻辑操作 逻辑操作符: & 与 | 或 ~ 非 xor异或 逻辑操作与关系操作类似。 数值计算 与符号计算相比,数值计算在科研和工程中的应用更为广泛。 数值求和与近似数值积分 Sx=sum(X) 沿列方向求和 Scs=cumsum(X) 沿列方向求累计和 St=trapz(x,y) 采用梯形法沿列方向求函数y关于自变量x的积分 Sct=cumtrapz(x,y) 采用梯形法沿列方向求函数y关于自变量x的累计积分 【说明】trapz给出采样点(x,y)所连折线下的面积,即函数y在自变量区间x上的近似积分。cumtrapz(x,y)计算结果Sct是一个与y同样大小的数组,Sct(k)是 的近似值。数值积分的精度与积分区间的分割有关,分割越细,精度越高。 例如 x=1:5 sum(x) cumsum(x) x=1:9; X=reshape(x,3,3) sum(X) cumsum(X) 【例】求积分 ,其中 。 clear d=pi/8; t=0:d:pi/2; y=0.2+sin(t); s=sum(y); s_sa=d*s; %高度为函数采样值的小矩形面积之和(不是积分) s_ta=d*trapz(y); %连接各函数采样值的折线下的面积 disp(['sum求得积分',blanks(3),'trapz求得积分']) disp([s_sa, s_ta]) t2=[t,t(end)+d]; %为stair函数需要,增加一个采样区间 y2=[y,nan]; %为stair函数需要,增加一个非数函数值 stairs(t2,y2,':k') %绘制虚线阶梯函数 hold on plot(t,y,'r','LineWidth',3) h=stem(t,y,'LineWidth',2); %绘制针状图 set(h(1),'MarkerSize',10) axis([0,pi/2+d,0,1.5]) hold off shg %将当前图形窗口置于最上层 sum求得积分 trapz求得积分 1.5762 1.3013 图 4.1-4 sum 和trapz求积模式示意 【说明】d*sum(y)不是积分的近似值,因为通过图可以看出,阶梯虚线所占的自变量区间比积分区间多一个采样区间。 计算精度可控的数值积分 上述指令缺陷:难以控制精度;不能处理广义积分;计算速度相对较低。 q=integral(fun,xmin,xmax) 在xmin和xmax区间计算fun函数的精确积分(简单格式) q=integral(fun,xmin,xmax,Name,Value) 作用同上(复杂格式) 【说明】fun:描述被积函数的M码匿名函数或函数句柄,注意函数要适应输入量x的“数组运算”; xmin, xmax:积分区间的上下限,实数域可取有限或无限标量,复数域,其实部虚部必须为有限标量;当积分上下限为有限标量时,允许被积函数在区间端点适度奇异(缓慢发散的广义积分Improper Integral);也可处理衰减速度足够快的无限区域上的广义积分;积分限有复数时,给出从xmin到xmax直线路径上的积分。 若积分区间内有“奇异点(Sigularities)”,可将区间分割后在每一子区间计算后求和;若在积分区间或路径中有“第一类间断点(Discontinuity Point of the First kind)”,应按照积分方向把间断点依次排列构成数组,用作选项'Waypoints'的值。 老的积分函数quad, quadl等仍可以使用,不推荐。 二重积分、三重积分函数integral2, integral3。 Name,value选项见表。 积分指令的选项名称、取值及默认值 选项名 Name 允许值 Value 默认值 Default Value 含义 'AbsTol' 正实数 1e-10(双精度) 绝对误差限 'RelTol' 正实数 1e-6(双精度) 相对误差限 'ArrayValued' false true fasle 阵列形函数标识 'Waypoint' 实数单调序列数组 实数轴逐个积分子区间 复数序列数组 复平面有向折线路径序列点 使用该选项,积分上下限
本文档为【matlab简介】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
该文档来自用户分享,如有侵权行为请发邮件ishare@vip.sina.com联系网站客服,我们会及时删除。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
下载需要: 免费 已有0 人下载
最新资料
资料动态
专题动态
is_932712
暂无简介~
格式:doc
大小:1MB
软件:Word
页数:74
分类:理学
上传时间:2013-05-03
浏览量:17