1、Matlab 选讲 一 上海交通大学数学系 刘小军,MATLAB 的发展历程和影响MATLAB 名字由MATrix 和 LABoratory 两词的前三个字母组合而成。那是20 世纪七十年代后期的事:时任美国新墨西哥大学计算机科学系主任的Cleve Moler 教授出于减轻学生编程负担的动机,为学生设计了一组调用LINPACK 和EISPACK 库程序的“通俗易用”的接口,此即用FORTRAN 编写的萌芽状态的MATLAB。经几年的校际流传,在Little 的推动下,由Little、Moler、Steve Bangert 合作,于1984年成立了MathWorks 公司,并把MATLAB 正式
2、推向市场。从这时起,MATLAB 的内核采用C 语言编写,而且除原有的数值计算能力外,还新增了数据图视功能。,在时间进入20 世纪九十年代的时候,MATLAB 已经成为国际控制界公认的标准计算软件。到九十年代初期,在国际上30 几个数学类科技应用软件中,MATLAB 在数值计算方面独占鳌头,而Mathematica 和Maple 则分居符号计算软件的前两名。此后,MathWorks 公司推出了符号计算工具包:一个以Maple 为“引擎”的Symbolic Math Toolbox 1.0。此举结束了国际上数值计算、符号计算孰优孰劣的长期争论,促成了两种计算的互补发展新时代。MathWorks
3、公司还构作了NoteBook,将目光瞄准应用范围最广的Word,运用DDE 和OLE,实现了MATLAB与Word 的无缝连接,从而为专业科技工作者创造了融科学计算、图形可视、文字处理于一体的高水准环境。,Matlab界面简介 Command Window指令简介 基本数值计算及精度控制精度控制(vpa函数,需要Symbolic Math Toolbox支持)例如:vpa(4/17,30)在需要获得大整数的精确值或避免计算过程产生累计误差时,应使用符号运算,定义符号变量一般采用如下方式: syms a % 定义a为符号变量 sym(a) % 将变量a转换为符号变量,第一章 基础准备,变量和表达
4、式、指令的续行输入(使用符号 ) 简单矩阵的定义及输入、冒号:运算符的用法A=1,2;3,4 a=1:10 函数及其调用:调用方式同C/C+语言 Matlab中的保留变量特殊矩阵的输入 复数矩阵的输入:a=3+4i A=1+2i;4-6i 大型矩阵的输入:定义m文件使用load函数从数据文件中读入 其它特殊矩阵:,全零阵、全1阵、单位阵:zeros,eye,ones均匀分布、标准正态分布:rand、randn其它:linspace、magic、hilb矩阵及向量的操作 取矩阵中的元素:利用 () 和 :运算符A(3,4) A(1,:) A(:,2)A(2:3,4:5) A(1;3,3;4) 增
5、加及删除矩阵中的元素对矩阵中指定位置的元素赋值 矩阵的旋转与变形,Matlab中的Notebook简介 Matlab中的Notebook软件工具可以满足人们用中文Word编写、运行Matlab程序的愿望,实现Matlab与中文Word的“无缝连接”。使用方法:在Matlab运行notebook命令并按照提示配置即可。 Matlab中的基本矩阵运算 矩阵的加减法 矩阵的乘法注意与数乘运算 的区别:A*B 表示矩阵的乘法A.*B 表示将矩阵对应位置的元素相乘(数乘)*数乘的概念可扩展到其它运算(数组运算),矩阵求逆 inv(A) 求行列式值 det(A) 特征值与特征向量 V, D=eig(A)
6、向量运算与转置 向量与矩阵的范数 norm(A,p) 矩阵的除法在Matlab中,矩阵的除法可使用运算符 / 或 。A/B可以理解为A*inv(B),但两者是有区别的:后者要求B必须为方阵,而前者则不必。BA则可理解为inv(B)*A。,线性方程组的求解 设A为mn矩阵,求解的方程组形式为 A X = b,则求解的方式为 X = Ab,代表的如下含义: m = n 给出方程组的确定解。m n 超定方程,给出最小二乘解。m n 待定方程,给出由至多m(方程个数) 个非零元素组成的一组基本解。Matlab中的基本数据分析函数sum prod max min sort cumsum ,第二章 M文件
7、和编程,M文件 1脚本文件:在Matlab的工作空间内对数据进行操作。 2函数文件:可接受输入参数并返回输出参数,其内的变量不占用Matlab工作空间,第一行包含function 注: M文件的调用以文件名为准。%为Matlab的注释符,其后的语句不执行 (只对当前行有效)。,Matlab语言 1逻辑判断符= = =isequal函数 2逻辑运算符& | 3条件语句 if-else-end语句 switch-case-end语句 注:Matlab的switch指令不同于C语言,当Matlab检测到某个检测值和表达式的值相等,执行相应的一组指令,执行完毕后自动跳出switch结构,而无需使用br
8、eak指令。,4循环语句 for语句for x=array(commands)end 在for后面的表达式中的数组可以为任何合法的Matlab数组。 为了得到高效的代码,应尽量提高代码的向量化程度,而避免使用循环结构。 while语句while expression(commands)endbreak、continue 终止循环,例:利用上述循环求Fibonacci数列中第一个大于10,000的元素。 Matlab语言 1. 控制流语句 return 将函数的控制转出 input 提示用户输入数值、字符串等 yesinput 提供缺省输入值并可检查输入值 pause 暂停,用户按任意键继续 p
9、ause(s) 暂停s秒后继续 2. 判断输入输出参数的个数 nargin、nargout 3. 调试程序,第三章 图形处理,基本二维图形 Plot 用法如下: a. Plot (X) b. Plot (X,Y) c. Plot (X1,Y1,X2,Y2,) d. Plot (X1,Y1,LineSpec1,X2,Y2, X3,Y3, ) 其中参数LineSpec定义线条的属性。Matlab中可以对线条定义如下的特性: a. 线型: -(实线) - (划线) :(点线) -. (点划线) b. 颜色 c. 标记类型,关于参数X、Y的说明: X、Y是同维向量时,则绘制以X、Y元素为横、纵坐标的曲
10、线 X是向量,Y是有一维与X等维的矩阵时,则绘出多根不同色彩的曲线。曲线数等于Y的另一维数,X被作为这些曲线的共同横坐标。 X是矩阵、Y是向量时,以Y为共同纵坐标,其它与上述相同。 X、Y都是矩阵时,则以X、Y对应列元素为横、纵坐标分别绘制曲线,曲线条数等于矩阵的列数。例: t=(0:pi/50:2*pi);k=0.4:0.1:1;Y=cos(t)*k; %此处产生一矩阵plot(t,Y),常用的绘图选项,图形的叠加、绘制子图: hold on/off subplot一些特殊的二维图形polar(theta,rho,LineSpec) 函数r = f ()的极坐标图 例: t = 0:.01:
11、2*pi;polar(t,sin(3*t).*cos(2*t),-r)pie 用x中的数据画一饼形图semilogx x轴对数图形loglog 双对数图形,bar 用二维垂直条形显示向量或矩阵中的值barh 用二维水平条形显示向量或矩阵中的值hist 二维条形直方图,可以显示出数据的分配情形 histfit 在画频数直方图的同时,画出拟合得到的正态分布线。该指令取自Statistic Toolbox三维图形的绘制 1. 三维线图 plot3(X, Y, Z, s) 绘制单参数的三维曲线图 例: t=(0:0.02:2)*pi;x=sin(t); y=cos(t); z=cos(2*t);plo
12、t3(x,y,z,b-,x,y,z,bd);,2. 三维网线和曲面图 三维网线图和曲面图的绘制比三维线图要复杂,主要表现在数据准备、三维图形的视点、色彩和光照等。 三维网线图和曲面图首先要进行数据准备,可以自己产生所需的“格点”矩阵,也可以利用Matlab的指令meshgrid产生“格点”矩阵:X, Y=meshgrid(X, Y)3. 三维网线、曲面图的基本指令: mesh(Z) 以Z矩阵列、行下标为x,y轴自变量,画网线图 mesh(X,Y,Z) 最常用的网线图调用格式 mesh(X,Y,Z,C) 完整调用格式,画由C指定用色的网线图,surf(Z) 以Z矩阵列、行下标为x,y轴自变量,画
13、曲面图surf(X,Y,Z) 最常用的曲面图调用格式surf(X,Y,Z,C) 完整调用格式,画由C指定用色的曲面图 例:用曲面图表示 z=x2+y2x=-4:0.1:4; y=x;X,Y=meshgrid(x,y)Z=X.2+Y.2;surf(X,Y,Z);注:可以采用stem3命令察看各个“格点”值的情况也可以换成mesh指令看图形的输出效果,特殊三维图形bar3、pie3、fill3、 三维图形的精细控制视点、旋动、色彩、照明、材质、 例:产生镂空效果(hidden off) X0,Y0,Z0=sphere(30); X=2*X0;Y=2*Y0;Z=2*Z0; surf(X0,Y0,Z0); hold on; mesh(X,Y,Z); hold off; hidden off;,
copyright@ 2008-2019 麦多课文库(www.mydoc123.com)网站版权所有
备案/许可证编号:苏ICP备17064731号-1