1、MATLAB 入门简介,概 述,Matlab是由美国Mathworks公司推出的一个科技应用软件,它的名字是由矩阵(MATrix)和实验室 ( LABoratory)的头三个字母组成。顾名思义,它相当于把矩阵放在实验室里做实验,Matlab是以矩阵为单位进行处理的,也就是它把一切都当作矩阵,即使是一个数也是。,Matlab是一种高性能的、用于工程计算的编程软件,它把科学计算、结果可视化和编程都集中在一个使用非常方便的环境中。,Matlab是一种广泛应用于工程计算及数值分析领域的新型高级语言,自1984年由美国 MathWorks 公司推向市场以来,历经二十多年的发展与竞争,现已成为国际公认的最
2、优秀的工程应用开发环境。Matlab功能强大、简单易学、编程效率高,深受广大科技工作者的欢迎。,在欧美各高等院校,Matlab已经成为线性代数、自动控制理论、数字信号处理、时间序列分析、动态系统仿真、图像处理等课程的基本教学工具,成为大学生、硕士生以及博士生必须掌握的基本技能。,概 述(续),Matlab 语言的首创人是 C. Moler,Matlab = Matrix Laboratry 矩阵实验室,概 述 (续),1984年The MathWorks的公司推出了第一个 Matlab 的商业版本,用 C 语言作了完全的改写。,其后又增添了丰富多彩的图形图像处理、多媒体功能、符号运算和它与其他
3、流行软件的接口功能,使得 Matlab 的功能越来越强大。,到九十年代初期,在国际上 30 几个数学类科技应用软件中, Matlab 在数值计算方面独占鳌头,而 Mathematica 和 Maple 则分居符号计算软件的前两名。,Matlab的发展 1984年,Matlab 1.0版 (DOS版,182K,20来个函数) 1992年,Matlab 4.0版(93年推出Windows版本) 1994年,Matlab 4.2, 1999年,Matlab 5.32000年,Matlab 6.0, 2002年,Matlab 6.5 2004年,Matlab 7.0, 2006年,Matlab2006
4、a2007年,Matlab2007a ,目前,Matlab 已经成为国际上最流行的科学与工程计算的软件工具,它已经不仅仅是一个“矩阵实验室”了,而成为了一种具有广泛应用前景的全新的计算机高级编程语言了,有人称它为“第四代”计算机语言。 就影响而言,至今仍然没有一个别的计算软件可与 Matlab 匹敌。,概 述(续),数值计算功能,Matlab是一个交互式软件系统 给出一条命令,立即就可以得出该命令的结果,Matlab 的特点与主要功能,Matlab以矩阵作为基本单位,但无需预先指定维数(动态定维)按照IEEE的数值计算标准进行计算提供十分丰富的数值计算函数,方便计算,提高效率Matlab命令与
5、数学中的符号、公式非常接近,可读性强,容易掌握,符号运算功能,和著名的 Maple 相结合,使得 Matlab 具有强大的符号计算功能,绘图功能,Matlab 提供了丰富的绘图命令,能实现一系列的可视化操作,Matlab 的特点与主要功能,命令窗口,当前工作目录,当前工作空间,输入命令的历史记录,命令 提示符,MATLAB的联机帮助,MATLAB 具有完善的帮助系统,MATLAB基本操作指令,demo-运行MATLAB提供的展示文件 clear-清除workspace中所有的变量 clc-清除命令窗口中的所有内容 size-计算变量的维数 length-计算变量的长度 C-停止运行当前程序 q
6、uit/exit-结束或离开MATLAB,命令的基本语法,Output1, Output2, = command(input1, input2, ),Matlab 语言规则,Matlab 区分大小写,它的命令和函数全是小写的,一行可以输入几个命令,用分号“;” 或逗号“,”隔开,续行符: “”(三个点),如果语句很长,可用续行符将一个语句写成多行。续行符的前最好留一个空格。,注释符: “%”,其后面的内容为注释,对 Matlab 的计算不产生任何影响,Matlab 变量,Matlab中变量名是以字母开头,可以由字母、数字或下划线组成,最多 63 个字符(6.5 版本前为 19 个),变量赋值:
7、 变量表达式,赋值号左边必须是变量!,系统预定义变量:eps, pi, Inf, NaN, i, j , ans,who、whos、clear,save、load,save 将所有变量存入文件 matlab.mat,save mydat / save mydat.mat 将所有变量存入 mydata.mat,save 文件名 变量名列表,数与算术表达式,Matlab 中的数值表示一般采用十进制,可以带小数点和正负号。,(1) Matlab 中的数默认是双精度实数,(2) 浮点运算的相对精度为 eps,Matlab 中eps2.22e-016,即大约保持 16 位有效数字。,(3) Matlab
8、 中数的表示范围为:10308 10308,(4) Matlab 中的虚部单位:i, j,z=3+4i (4 与 i 之间无空格), z=3+4*i,如:6,+6,-6.6,0.006,6.6e-6,100e60,-0.06e-012,数据的输入,数据的基本形式矩阵,(1) 直接输入: a=1 2 ; 3, 4,(2) 冒号 “:” 运算符:初值 : 步长 : 终值,同一行中各元素之间用“空格”或“,” (英文状态下) 分开; 行与行之间用 “;” 或“回车”分开 ;开始和结束用“”和“”表示,a=1:5, b=0:pi/4:pi,(3) 由向量或小矩阵生成:X=a ; b,(5) 交互式输入
9、: input,n=input(Please input n: ),(4) 由 数据文件生成,特殊矩阵生成函数,(6) 一些生成特殊矩阵的函数,矩阵元素的操作,矩阵元素的提取,(1) 单个元素:A ( 2, 3 ),(2) 整行或整列:A ( 2, : ), A ( :, 3 ),=?,=?,(3) 子矩阵:A ( 2:5, 4:8 ), A ( 1,3, 2,4 ) , A ( 3,2, 2,4 ),A ( :, : ) 与 A ( : ) 的区别?,(4) 删除矩阵的行列:,A =, A ( 3, : )=, A ( :, 2,4 )=,数据输出格式,Matlab 以双精度执行所有的运算,
10、结果可以在屏幕上输出,同时赋给指定变量,若无指定变量,则系统会自动将结果赋给变量 “ans”,Matlab 中数据的输出格式可以通过 format 命令指定,format 命令只改变变量的输出格式,但不会影响变量的值, format long, format rational, format compact,特殊矩阵生成函数,MATLAB 矩阵运算,矩阵的转置:共轭“”,非共轭“.”,矩阵的翻转和旋转: fliplr、flipud、rot90,矩阵元素重组: reshape(A, m, n),查看矩阵的大小:size(A)、size(A, 1)、size(A, 2),将 A 排成一个m n 的
11、矩阵,满足 m n = #A,数组运算(点运算):.*,./,.,.,矩阵算术: +,-,*,/,,参与 “+, -, .*, ./ , .” 运算的对象必须具有相同的形状,MATLAB 矩阵运算,矩阵的 Kronecker 乘法:kron(A,B),MATLAB 函数取值,Matlab 普通函数取值,设 x 是变量, f 是一个函数,则,(1) 当 x = a 是标量时,f (x) = f (a),(2) 当 x 是向量或矩阵时, f 作用在 x 的每个分量上,结果为一个与 x 具有相同形状的向量或矩阵,Matlab 矩阵函数:expm、sqrtm、logm,,funm,funm(A,cos
12、),MATLAB的三角函数,三角函数,MATLAB的基本数学函数,基本数学函数,取整函数与矩阵相关函数,取整函数,矩阵相关函数,基本绘图操作,plot:画二维线性坐标 X-Y 关系图 loglog:画二维全对数坐标 X-Y 关系图 semilogx/semilogy:画二维半对数坐标 X-Y 关系图(X/Y 轴为对数坐标) figure:开启或切换绘图窗口(figure) subplot:切割绘图窗口为数个子绘图窗口 hold:保留目前绘图窗口中的图形 axis:设定或取得图形坐标轴范围 grid:产生或关闭图形的坐标网格线 legend:产生图例 title:标示图形的标题 xlabel:标
13、示 X 轴的说明文字 ylabel:标示 Y 轴的说明文字 text:在指定的位置标示文字 gtext:在鼠标光标指定的位置标示文字 print:打印图形,二维基本绘图简介,增加图形的说明: ex., X=0:0.1:2*pi; Y=sin(X); Z=cos(X); plot(X, Y, b-, X, Z, r:) title(sin() and cos() xlabel(X) ylabel(f(X) legend(sin(X),cos(X),二维基本绘图简介,如何同时呈现多个图形: 使用 plot 的第三种形式,一次画出多个数对 使用 hold 将图形固定住,重迭多个数对的绘图结果 使用
14、subplot 分割绘图窗口,同时呈现多个子图形,二维绘图简介,使用hold固定,X=0:0.1:2*pi; Y=sin(X); Z=cos(X); plot(X, Y, b-) hold on; xlabel(X) ylabel(f(X) plot(X, Z, r:) text(0.2,0,sin(X) text(0.5*pi+0.2,0,cos(X),二维绘图简介,使用subplot分多个窗口, X=0:0.1:2*pi; Y=sin(X); Z=cos(X); subplot(211); plot(X, Y, b-) xlabel(X) ylabel(sin(X) subplot(2,1
15、,2); plot(X, Z, r:) xlabel(X) ylabel(cos(X),MATLAB下的程序编写,MATLAB 程序的基本形式:M-file M-file 的特性: 是纯文字文件(只要扩展名保持 .m) 任何 MATLAB 指令都可以出现在 M-file 中 M-file 的种类: Script (命令稿/命令宏) Function (函数),MATLAB下的程序编写,Script: 用来连续执行一连串的指令 所有执行中使用或产生的变量皆存在于 workspace 没有输入与输出变量 Function: 用来定义一个自定义的函数 所有执行中产生的变量都是局部变量 可以有输出与输
16、入变量,MATLAB下的程序编写,Function M-file 的格式: M-file 的第一列必须有 function 这个关键词 M-file 的文件名通常与函数定义相同 除非使用 global 全局变量声明,否则所有变量都属于局部变量 Function 的结束多半也是 M-file 的结束,若要提早结束 Function 的执行,可以使用 return 指令,MATLAB下的程序编写,范例,function mean,stdev = stat(x) %STAT Interesting statistics. n = length(x); mean = avg(x,n); stdev =
17、 sqrt(sum(x-avg(x,n).2)/n);%- function mean = avg(x,n) %MEAN subfunction mean = sum(x)/n;,MATLAB下的程序编写,程序的流程控制(Flow Control): 循环指令(Loop Command): for end while end 条件指令(Branching Command): if elseif else end switch case otherwise end,MATLAB下的程序编写,for 循环: 语法 1: for 变量=向量表达式 end 语法 2: for 变量=矩阵表达式 end
18、,x=1; for i=1:5 x=x*i; end disp(x)120, x=1 3; 2 4; for i=x fprintf(%dt,i) end 1 2 3 4,MATLAB下的程序编写,while 循环: 语法:while 条件式表达式end, String=!baL CP ot emocleW; n=length(String); while n 0 fprintf(%c,String(n) n=n-1; end Welcome to PC Lab!,MATLAB下的程序编写,if 条件指令: 语法:if 条件式一表达式一elseif 条件式二表达式二elseif 条件式三表达式
19、三else 表达式四end, y=3 4 5 9 2; for i=1:length(y) if rem(y(i),3) = 0 fprintf(y(%g) is 3n.n,i); elseif rem(y(i),3) = 1 fprintf(y(%g)=%g is 3n+1.n,i,y(i); else fprintf(y(%g)=%g is 3n+2.n,i,y(i); end end y(1) is 3n. y(2)=4 is 3n+1. y(3)=5 is 3n+2. y(4) is 3n. y(5)=2 is 3n+2.,MATLAB下的程序编写,switch 条件指令: 语法:sw
20、itch 表达式case 值一表达式一case 值二表达式二otherwise表达式三end, for month=1:12 switch month case 3,4,5 season=Spring; case 6,7,8 season=Summer; case 9,10,11 season=Autumn; otherwise season=Winter; end fprintf(Month %d is %s.n,month,season); end Month 1 is Winter. Month 2 is Winter. Month 3 is Spring. Month 4 is Spring. Month 5 is Spring. Month 6 is Summer. Month 7 is Summer. Month 8 is Summer. Month 9 is Autumn. Month 10 is Autumn. Month 11 is Autumn. Month 12 is Winter.,