1、MATLAB快速入门编程环境1编程入门2绘图3Matlab 简介qMatlab 提供了强大的科学计算、灵活的程序设计流程、高质量的图形可视化与界面设计等功能,被广泛应用于科学计算、控制系统、信息处理等领域的分析、仿真和毕业设计。Matlab 功能强大、简单易学、编程效率高,深受广大科技工作者的欢迎。q Matlab是一种广泛应用于工程计算及数值分析领域的新型高级语言,现已成为国际公认的最优秀的工程应用开发环境。q Matlab 具有很强的数值计算功能 Matlab 以矩阵作为数据操作的基本单位,但无需预先指定矩阵维数(动态定维)提供十分丰富的数值计算函数,方便计算,提高效率 简便易学:Matl
2、ab 命令与数学中的符号、公式非常接近,可读性强,容易掌握q Matlab 是一个交互式软件系统输入一条命令,立即就可以得出该命令的结果Matlab:Matrix Laboratryq Matlab 的绘图功能强大Matlab提供丰富的绘图命令,很方便实现数据的可视化Matlab 的特点与功能q Matlab 符号计算功能强大q Matlab 的编程功能Matlab简单易学、编程效率高。q Matlab 丰富的工具箱(toolbox)根据专门领域中的特殊需要而设计的各种可选工具箱Symbolic Math PDEOptimizationSignal processImage ProcessSt
3、atisticsControl SystemSystem Identification Matlab 的基本用法q Matlab 系统的启动双击 桌面上的Matlab 快捷图标使用 Windows“开始”菜单程序MATLAB7.0 MATLAB7.0 q Matlab 系统的退出 在 Matlab 主窗口 File 菜单中选择 Exit Matlab 命令 在 Matlab 命令窗口输入 exit 或 quit 命令 单击 Matlab 主窗口的“关闭”按钮注:注:在任何时候,只要按ctrl+cctrl+c,MATLAB将停止运行的所有工作Matlab 的工作界面命令窗口当前工作目录当前工作空
4、间输入命令的历史记录命令提示符Matlab 的命令窗口q 交互式的命令执行方式在Command Window内的提示符()之后输入运算式,并按 Enter 键即可 缺省变量名 ans若不想在屏幕上输出结果,可以在语句最后加分号 cos(0),210,2+4iA=1 2 3;2 4 6;3 6 9det(A)t=0:pi/100:2*pi;y=sin(t);plot(t,y,r*)q 变量命名原则Matlab 变量u 以字母开头:x1,y,千万不要以数字开头u 后面可以跟 字母、数字 和 下划线u 变量名称区分字母的 大小 写,比如Abc和abc不同u字母间不可留空格,可以用下划线math_sc
5、oreq Matlab 语句的通常形式变量=表达式q系统预定义变量系统预定义变量Matlab 变量u pi 圆周率 u inf/Inf 无穷大 u nan/NaN Not-a-Number,一个不定值,如 0/0u eps 浮点运算相对精度 q 特殊变量 ansu i/j 虚部单位,即应尽量避免给系统预定义变量重新赋值!q 数与算术表达式Matlab 数值运算u Matlab 中的数默认是双精度实数,表示方法同 C 语言3,-9,0.4,1.603e-12,3.23e+20u 浮点数表示范围为:10-308 10308u 复数的输入 z=3+4i (4 与 i 之间不能有空格)z=3+4*iq
6、数学运算符数学运算符u+加法Matlab 数值运算u-减法u*乘法u/和 除法(右除和左除)u 幂运算u.*./.点运算常用数学函数函数名函数名含含 义义函数名函数名含含 义义sin正弦函数正弦函数exp自然指数函数自然指数函数cos余弦函数余弦函数pow22的的幂幂tan正切函数正切函数abs绝对值绝对值函数函数asin反正弦函数反正弦函数angle复数的幅角复数的幅角acos反余弦函数反余弦函数real复数的复数的实实部部atan反正切函数反正切函数imag复数的虚部复数的虚部sinh双曲正弦函数双曲正弦函数conj复数共复数共轭轭运算运算cosh双曲余弦函数双曲余弦函数rem求余数或模运
7、算求余数或模运算函数名函数名含含 义义函数名函数名含含 义义tanh双曲正切函数双曲正切函数mod模除求余模除求余asinh反双曲正弦函数反双曲正弦函数fix向零方向取整向零方向取整acosh反双曲余弦函数反双曲余弦函数floor不大于自不大于自变变量的最大整数量的最大整数atanh反双曲正切函数反双曲正切函数ceil不小于自不小于自变变量的最小整数量的最小整数sqrt平方根函数平方根函数round四舍五入到最四舍五入到最邻邻近的整数近的整数log自然自然对对数函数数函数sign符号函数符号函数log10常用常用对对数函数数函数gcd最大公因子最大公因子log2以以2为为底的底的对对数函数数函
8、数lcm最小公倍数最小公倍数常用数学函数简单实例练习:求29的自然对数和无理数e的值q 矩阵的直接输入 矩阵用方括号“”括起例:A=1 2 3;4 5 6;7 8 9 矩阵同一行中的元素之间用空格或逗号分隔 矩阵行与行之间用 分号分开 直接输入法中,分号可以用回车代替矩阵q Matlab 的操作对象是 矩阵矩阵下标q 单个元素的引用例:A(2,3)矩阵元素的引用利用小括弧和元素所在的位置(下标)x(i):向量 x 中的第 i 个元素A(i,j):矩阵 A 中的第 i 行,第 j 列元素矩阵操作q 提取矩阵的部分元素:冒号运算符uA(i,j)A的第i行第j列元素uA(:,k)A的第 k 列u A
9、(k,:)A的第 k 行 uA(:,k:m)A的第 k 到第 m 列组成的子矩阵uA(end,end)A的最后一行最后一列如何获得由 A 的第一、三行和第一、二列组成的子矩阵?自己动手矩阵的各种处理A(2,3)%查询第2行第3列所对应的元素A(12)%查询第12个元素A(9 14,10 15)%思考之A(:,4)%查询第4列元素A(4,:)%查询第4行元素A(end,:)%最后一行元素A(find(A5)%查询大于5的元素A(2,3)=5%重新赋值第2行3列元素为5q 向量与矩阵的生成向量与矩阵的生成u 向量的生成 直接输入:a=1,2,3,4 冒号创建:x=a:step:b 从矩阵中抽取行或
10、列生成线性等分向量:x=linspace(a,b,n)x=linspace(0,1,5)x2=a+h:h:b-h;%2倍的点x4=a+h/2:h:b-h/2;%4倍的点q 大矩阵可以把小矩阵作为其元素矩阵元素赋值例:A=A;11 12 13 在原矩阵的下方加一行如何在原矩阵的右边添加一列?u已知矩阵A和行向量b,如何得到矩阵常见矩阵生成函数zeros(m,n)生成一个生成一个 m 行行 n 列的零矩阵,列的零矩阵,m=n 时可简写为时可简写为 zeros(n)ones(m,n)生成一个生成一个 m 行行 n 列的元素全为列的元素全为 1 的矩阵的矩阵,m=n 时可写为时可写为 ones(n)e
11、ye(m,n)生成一个主对角线全为生成一个主对角线全为 1 的的 m 行行 n 列矩阵列矩阵,m=n 时可简写为时可简写为 eye(n),即为,即为 n 维单位矩阵维单位矩阵diag(A)diag(x)A 是矩阵,则是矩阵,则 diag(A)为为 A 的主对角线向量的主对角线向量x 是向量,是向量,diag(x)产生以产生以 x 为主对角线的对角矩为主对角线的对角矩阵阵rand(m,n)产生产生 01 间间均匀分布均匀分布的随机矩阵的随机矩阵 m=n 时简写为时简写为 rand(n)randn(m,n)产生均值为产生均值为0,方差为,方差为1的的标准正态分布标准正态分布随机矩阵随机矩阵m=n
12、时简写为时简写为 randn(n)矩阵操作q 查看矩阵的大小:sizeu size(A)列出矩阵 A 的行数和列数u size(A,1)返回矩阵 A 的行数u size(A,2)返回矩阵 A 的列数例:A=1 2 3;4 5 6 size(A)size(A,1)size(A,2)u length(x)返回向量 X 的长度u length(A)等价于 max(size(A)逆矩阵与行列式计算q矩阵的逆矩阵:inv(A)q矩阵的行列式:det(A)要求A为方阵q矩阵的秩:rank(A)例:A=1 2 3;4 5 6;2 3 5;A1=inv(A),d=det(A1),rank(A1)矩阵的数组运算
13、q 数组运算:对应元素进行运算点与算术运算符之间不能有空格!u 数组运算包括:点乘、点除、点幂u 相应的数组运算符为:“.*”,“./”,“.”和“.”例:A=1 2 3;4 5 6;B=3 2 1;6 5 4;C=A.*B;D=A./B;E=A.B;F=A.B;数与数组的点幂x.y=14,25,36=1,32,729 x.2=12,22,32=1,4,9 2.x=?例:x=1 2 3;y=4 5 6;矩阵的“除法”q 矩阵的除法:/、右除和左除 若 A 可逆方阵,则AB A 的逆左乘 B inv(A)*BB/A A 的逆右乘 B B*inv(A)X=AB A*X=BX=B/A X*A=B 通
14、常,矩阵除法可以理解为 当 A 和 B 行数相等时即可进行左除 当 A 和 B 列数相等时即可进行右除向量特殊运算介绍min最小值sum总和max最大值prod总乘积mean平均值std标准差median中位数sort排序dot数量积cross向量积例:A=magic(3)或A=1:5%运算对向量或矩阵都适用B=mean(A)C=sum(A)变量的存储q 存储当前工作空间中的变量u save 将所有变量存入文件 matlab.matu save mydata 将所有变量存入指定文件 mydata.matq 存储指定的变量u save mydata.mat 将所有变量存入文件 mydata.ma
15、tsave 文件名 变量名列表例:save mydata A x z 变量名列表中各变量之间用空格分隔。变量的读取q 将数据文件中的变量载入当前工作空间u load mydata 载入数据文件中的所有变量u load mydata A x 从数据文件中提取指定变量q 清除当前工作空间中的变量u clear 清除当前工作空间中的所有变量u clear A x 清除指定的变量q 输出格式Matlab 的输出u Matlab 以双精度执行所有的运算,运算结果可以在屏幕上输出,同时赋给指定变量;若无指定变量,则系统会自动将结果赋给变量“ans”u File菜单,选择Preferences菜单项,可以设
16、置显示格式uMatlab 中数的输出格式可以通过 format 命令指定format 只改变变量的输出格式,但不会影响变量的值!Matlab帮助系统q 联机帮助help 显示指定命令的简短使用说明例:help eig help sqrt q 详细使用帮助doc 以网页形式显示指定命令的帮助页例:doc eig q 其它相关命令helpdesk编程基础关系与逻辑运算1数据输入与输出2函数文件3选择与循环语句4程序设计技巧简介5q 用 Matlab 语言编写的程序称为 M 文件。q M 文件是由若干 Matlab 命令组合在一起构成的,它可以完成某些操作,也可以实现某种算法。事实上,Matlab
17、提供的内部函数以及各种工具箱,都是利用 Matlab 语言开发的 M 文件。用户也可以结合自己的工作需要,开发自己的程序或工具箱。q M 文件根据调用方式的不同可以分为两类:u Script:脚本文件/命令文件 u Function:函数文件 M 文件q M 文件以.m 为扩展名。q M 文件是一个文本文件,可以用任何文本编辑器来建立和编辑,通常使用 Matlab 自带的 M 文件编辑器。M 文件的建立与打开q 新建一个 M 文件u 菜单操作(File New M-File)u 命令操作(edit M 文件名)u 命令按钮(快捷键)q 打开已有的 M 文件u 菜单操作 (File Open)u
18、 命令操作(edit M 文件名)u 命令按钮 (快捷键)u 双击 M 文件 q 程序控制结构有三种:顺序结构、选择结构和循环结构。M文件控制流选择结构 是根据给定的条件成立或不成立,分别执行不同的语句。Matlab 用于实现选择结构的语句有 if 语句和 switch 语句。关系运算小于小于大于大于=大于等于大于等于=等于等于=不等于不等于l 比较大小,如果结论是 真 则返回 1,否则返回 0l 注意=与=的区别l 关系操作符能用来比较两个同样大小的数组,或用来比较一个数组和一个标量,在后一种情况,标量和数组中的每一个元素相比较,比较结果与数组大小一样。q 关系运算符&与与(Elementw
19、ise AND)|或或(Elementwise OR)非非xor(x,y)异或异或逻辑运算q 逻辑运算符A&B 等价于 and(A,B)A|B 等价于 or(A,B)A 等价于 not(A)例:A=input(Please input A:)u 数据的输入:inputA=input(提示信息)l 其中 提示信息 为字符串,l 该命令要求用户输入 A 的值(可以是数或字符串)数据输入 inputA=input(提示信息,s)注:此时输入的字符串不要加单引号!l 如果是输入字符串,也可以使用下面的方法name=input(Whats your name?,s)例:disp(X)输出变量 X 的值,
20、可以是数值矩阵或字符串 B=1 2 3;4 5 6;7 8 9;disp(B)数据输出 dispu 数据的输出:disp A=Hello,Tom!;disp(A)例:l 单分支结构if expression(条件)statements(语句组)endif 条件语句if expression(条件)statements1(语句组1)else statements2(语句组2)endl 双分支结构数据输出 fprintffprintf(fid,format,variables)按指定的格式将变量的值输出到指定的文件u 数据的输出:fprintfl fid 为文件句柄,若缺省,则将变量的值输出到屏幕
21、上l format 用来指定数据输出时采用的格式,常见的有%e(采用科学计算形式)%f(采用浮点数形式)%g(由系统自动选取上述两种格式之一)%s(输出字符串)l format 中还可以使用一些特殊格式,如:n(换行)t(制表符)b(退格)(反斜杆)%(百分号)function out1,out2,=函数名(in1,in2,)%注释说明部分(可选)函数体语句(必须)u 第一行为引导行,表示该 M文件是函数文件u 函数名的命名规则与变量名相同(必须以字母开头)u 当输出行参多于一个时,用方括号括起来u 函数必须是一个单独的 M文件u 函数文件名必须与函数名一致u 以百分号开始的语句为注释语句函数
22、文件q 函数文件由 function 语句引导函数文件举例myfun.mfunction x1,x2=myfun(a,b,c)temp=sqrt(b2-4*a*c);x1=(-b+temp)/2/a;x2=(-b-temp)/2/a;q 函数调用的一般格式输出实参列表=函数名(输入实参列表)函数调用子函数function avg=fun(x)%主函数 n=length(x);avg=mean(x,n);function a=mean(x,n)%子函数a=sum(x)/n;M文件的编辑q进入MATLAB的Editor/Debugger窗口来编辑程序q在编辑环境中,文字的不同颜色显示表明文字的不同
23、属性。绿色:注解;黑色:程序主体;红色:属性值的设定;蓝色:控制流程。程序设计技术q程序出错主要为两类:1)格式错误,如缺(或)等,在运行时可检测出大多数该类错误,并指出错在哪一行。2)算法错误,逻辑上的错误,不易查找,遇到此类错误时需耐心。q 程序控制结构有三种:顺序结构、选择结构和循环结构。任何复杂的程序都由这三种基本结构组成。u 顺序结构M文件控制流l 按排列顺序依次执行各条语句,直到程序的最后。l 这是最简单的一种程序结构,一般涉及数据的输入输出、数据的计算或处理等。选择结构 是根据给定的条件成立或不成立,分别执行不同的语句。Matlab 用于实现选择结构的语句有 if 语句和 swi
24、tch 语句。选择结构if expression1(条件1)statements1(语句组1)elseif expression2(条件2)statements2(语句组2).elseif expressionm(条件m)statementsm(语句组m)else statements(语句组)endl 多分支结构if 条件语句for variable=expression statement(循环体)end循环变量循环结构while expression(条件)statement(循环体)endfor循环【练习】一个三位整数各位数字的立方和等于该数本身则称该数为水仙花数。输出全部水仙花数。l
25、 循环语句可以嵌套使用while 循环while expression(条件)statement(循环体)endl 不能在 for 循环体内改变循环变量的值l 为了提高代码的运行效率,应尽可能提高代码的向量化程度,避免 for 循环的使用l 如果预先就知道循环的次数,则可以采用 for 循环;否则,如果预先无法确定循环的次数,则可以使用 while 循环。u break 和 continuel break 语句用于终止循环的执行,即跳出最内层循环 l continue 语句用于结束本次循环,进行下一次循环 l break 和 continue 一般与 if 语句配合使用其它流控制语句u ret
26、urnl return 语句用于退出正在运行的脚本或函数,通常用在函数文件中。l 根据表达式的不同取值,分别执行不同的语句。switch expression(表达式)case value1(表达式1)statement1(语句组1)case value2(表达式2)statement2(语句组2).case valuem(表达式m)statementm(语句组m)otherwise statement(语句组)endswitch 语句首先由计算机随机产生一个 1,100 之间的一个整数,然后由用户猜测所产生的这个数。根据用户猜测的情况给出不同的提示,如果猜测的数大于产生的数,则显示 “Hig
27、h”,小于则显示“Low”,等于则显示“You won!”,同时退出游戏。用户最多有 7 次机会。上机作业u 猜数游戏Matlab 绘图Matlab 二维作图u plot(x,y)q 基本形式 x,y 都是向量,则以 x 中元素为横坐标,y 中元素为纵坐标作平面曲线。此时 x,y 必须具有相同长度。x,y 都是矩阵,则将 x 的列和 y 中相应的列相组合,绘制多条平面曲线。此时 x,y 必须具有相同的大小。x 是向量,y 是矩阵,若 x 的长度与 y 的行数相等,则将 x 与 y 中的各列相对应,绘制多条平面曲线;否则,若 x 的长度与 y 的列数相等,则将 x 与 y 中的各行相对应,绘制多
28、条平面曲线。此时 x 的长度必须等于 y 的行数或列数。q 点和线的基本属性图形的属性u plot(x,y,string)其中 string 是用 单引号 括起来的字符串,用来指定图形的属性(点、线的形状和颜色)属性可以全部指定,也可以只指定其中某几个排列顺序任意红色、虚线、离散点用加号蓝色、点划线离散点为菱形黑色、实线离散点用星号 x=0:0.2:2*pi;plot(x,cos(x);plot(x,cos(x),r+:);plot(x,cos(x),bd-.);plot(x,cos(x),k*-);同时绘制多个函数图像u plot(x1,y1,s1,x2,y2,s2,.,xn,yn,sn)属
29、性选项可以省略等价于:hold onplot(x1,y1,s1)plot(x2,y2,s2).plot(xn,yn,sn)图形的基本属性线型线型点标记点标记颜色颜色-实线实线:虚线虚线-.-.点划线点划线-间断线间断线.点点o o 小圆圈小圆圈x x 叉子符叉子符+加号加号*星号星号s s 方格方格d d 菱形菱形 朝上三角朝上三角v v 朝下三角朝下三角 朝右三角朝右三角 x=-pi:pi/10:pi;y=sin(x);plot(x,y,rh:,linewidth,2,.markeredgecolor,b,.markerfacecolor,g)例:q 线条的粗细,字体大小,坐标轴属性等。li
30、newidth:指定线条的粗细markeredgecolor:指定标记的边缘色markerfacecolor:指定标记表面的颜色注:1)属性与属性的值是成对出现的 2)更多属性参见 plot 的联机帮助 可用于数值统计分析或离散数据处理bar(x,y);-条形图 hist(x,y);-直方图stairs(x,y);-阶梯图 stem(x,y);-茎干图 8、应用型绘图指令:应用型绘图指令x=1 2 3 4 5 6 7 8 9 10;y=5 6 3 4 8 1 10 3 5 6;例 x1=randn(1,1000);y1=-3:0.1:3;应用型绘图指令x2=0:0.1:10;y2=1./(x2.3-2.*x2+4);x3=0:0.1:10;y3=1./(x2.3-2.*x2+4);应用型绘图指令