1 / 123

MATLAB 入门简介

MATLAB 入门简介. 概 述. Matlab 是由美国 Mathworks 公司推出的一个科技应用软件. 它的名字是由矩阵( MAT rix )和实验室 ( LAB oratory) 的头三个字母组成。顾名思义,它相当于把矩阵放在实验室里做实验, Matlab 是 以矩阵为单位 进行处理的,也就是它把一切都当作矩阵,即使是一个数也是。. Matlab 是一种高性能的、用于工程计算的编程软件,它把科学计算、结果可视化和编程都集中在一个使用非常方便的环境中。. 概 述(续).

kamali
Download Presentation

MATLAB 入门简介

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. MATLAB 入门简介

  2. 概述 • Matlab是由美国Mathworks公司推出的一个科技应用软件 • 它的名字是由矩阵(MATrix)和实验室 ( LABoratory)的头三个字母组成。顾名思义,它相当于把矩阵放在实验室里做实验,Matlab是以矩阵为单位进行处理的,也就是它把一切都当作矩阵,即使是一个数也是。 • Matlab是一种高性能的、用于工程计算的编程软件,它把科学计算、结果可视化和编程都集中在一个使用非常方便的环境中。

  3. 概 述(续) • Matlab是一种广泛应用于工程计算及数值分析领域的新型高级语言,自1984年由美国 MathWorks 公司推向市场以来,历经二十多年的发展与竞争,现已成为国际公认的最优秀的工程应用开发环境。Matlab功能强大、简单易学、编程效率高,深受广大科技工作者的欢迎。 • 在欧美各高等院校,Matlab已经成为线性代数、自动控制理论、数字信号处理、时间序列分析、动态系统仿真、图像处理等课程的基本教学工具,成为大学生、硕士生以及博士生必须掌握的基本技能。

  4. 概 述 (续) • Matlab = Matrix Laboratry 矩阵实验室 • Matlab 语言的首创人是 C. Moler • 1984年The MathWorks的公司推出了第一个 Matlab 的商业版本,用 C 语言作了完全的改写。 • 其后又增添了丰富多彩的图形图像处理、多媒体功能、符号运算和它与其他流行软件的接口功能,使得 Matlab 的功能越来越强大。 • 到九十年代初期,在国际上 30 几个数学类科技应用软件中, Matlab 在数值计算方面独占鳌头,而 Mathematica 和 Maple 则分居符号计算软件的前两名。

  5. 概 述(续) • 目前,Matlab 已经成为国际上最流行的科学与工程计算的软件工具,它已经不仅仅是一个“矩阵实验室”了,而成为了一种具有广泛应用前景的全新的计算机高级编程语言了,有人称它为“第四代”计算机语言。 就影响而言,至今仍然没有一个别的计算软件可与 Matlab 匹敌。 • Matlab的发展1984年,Matlab 1.0版 (DOS版,182K,20来个函数) 1992年,Matlab 4.0版(93年推出Windows版本)1994年,Matlab 4.2, 1999年,Matlab 5.3 2000年,Matlab 6.0, 2002年,Matlab 6.5 2004年,Matlab 7.0, 2006年,Matlab2006a

  6. Matlab 的特点与主要功能 • Matlab是一个交互式软件系统给出一条命令,立即就可以得出该命令的结果 • 数值计算功能 • Matlab以矩阵作为基本单位,但无需预先指定维数(动态定维) • 按照IEEE的数值计算标准进行计算 • 提供十分丰富的数值计算函数,方便计算,提高效率 • Matlab命令与数学中的符号、公式非常接近,可读性强,容易掌握 • 符号运算功能 和著名的 Maple 相结合,使得 Matlab 具有强大的符号计算功能 • 绘图功能 Matlab 提供了丰富的绘图命令,能实现一系列的可视化操作

  7. 编程功能 Matlab 具有程序结构控制、函数调用、数据结构、输入输出、面向对象等程序语言特征,而且简单易学、编程效率高。 • 丰富的工具箱(toolbox) Matlab 包含两部分内容:基本部分和根据专门领域中的特殊需要而设计的各种可选工具箱。 PDE Optimization Symbolic Math Signal process Image Process Statistics Control System System Identification …… • Simulink 动态仿真集成环境 提供建立系统模型、选择仿真参数和数值算法、启动仿真程序对该系统进行仿真、设置不同的输出方式来观察仿真结果等功能 Matlab 的特点与主要功能

  8. 当前工作目录 命令 提示符 命令窗口 当前工作空间 输入命令的历史记录

  9. (1) help / doc 命令 查看指定命令的使用方法 (2) lookfor 命令 根据用户提供的关键词,去搜索出一组与之有关的命令 MATLAB的联机帮助 • MATLAB具有完善的帮助系统

  10. Matlab 语言规则 • Matlab 区分大小写,它的命令和函数全是小写的 • 一行可以输入几个命令,用分号“;” 或逗号“,”隔开 • 续行符: “…”(三个点),如果语句很长,可用续行符将一个语句写成多行。续行符的前最好留一个空格。 • 注释符: “%”,其后面的内容为注释,对 Matlab 的计算不产生任何影响

  11. Matlab 变量 • Matlab中变量名是以字母开头,可以由字母、数字或下划线组成,最多63 个字符(6.5 版本前为 19 个) • 变量赋值: 变量=表达式 赋值号左边必须是变量! • 系统预定义变量:eps, pi, Inf, NaN, i, j • who、whos、clear • save、load save- 将所有变量存入文件 matlab.mat save mydat / save mydat.mat-将所有变量存入 mydata.mat save 文件名 变量名列表

  12. 数与算术表达式 • Matlab 中的数值表示一般采用十进制,可以带小数点和正负号。 如:6,+6,-6.6,0.006,6.6e-6,100e60,-0.06e-012 (1) Matlab 中的数默认是双精度实数 (2) 浮点运算的相对精度为 eps,Matlab 中eps2.22e-016,即大约保持 16 位有效数字。 (3) Matlab 中数的表示范围为:10–308 ~10308 (4) Matlab 中的虚部单位:i,j z=3+4i (4与i 之间无空格), z=3+4*i

  13. 数据的输入 • 数据输入 (1) 直接输入: a=[1 2 ;3, 4] 同一行中各元素之间用“空格”或“,” (英文状态下) 分开; 行与行之间用 “;” 或“回车”分开 (2) 冒号 “:” 运算符:初值 :步长 :终值 a=[1:5], b=[0:pi/4:pi] (3) 由向量或小矩阵生成:X=[a ; b] (4) 由 数据文件生成 (5) 交互式输入: input n=input('Please input n: ')

  14. (6) 一些生成特殊矩阵的函数 特殊矩阵生成函数

  15. 矩阵元素的操作 • 矩阵元素的提取 (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] )=[] =? =?

  16. 数据输出格式 • Matlab 以双精度执行所有的运算,结果可以在屏幕上输出,同时赋给指定变量,若无指定变量,则系统会自动将结果赋给变量 “ans” • Matlab 中数据的输出格式可以通过 format 命令指定 >> format long >> format rational >> format compact format 命令只改变变量的输出格式,但不会影响变量的值

  17. 特殊矩阵生成函数

  18. MATLAB 矩阵运算 • 矩阵的转置:共轭“'”,非共轭“.'” • 矩阵的翻转和旋转: fliplr、flipud、rot90 • 矩阵元素重组: reshape(A, m, n) 将 A排成一个m  n 的矩阵,满足m n = #A • 查看矩阵的大小:size(A)、size(A, 1)、size(A, 2) • 矩阵算术:+,-,*,/,\,^ • 数组运算(点运算):.*,./,.\,.^ 参与“+, -, .*, ./ , .\”运算的对象必须具有相同的形状

  19. MATLAB 矩阵运算 • 矩阵的 Kronecker 乘法:kron(A,B)

  20. MATLAB函数取值 • Matlab 普通函数取值 设 x是变量, f 是一个函数,则 (1)当 x = a是标量时,f (x) = f (a) (2) 当 x 是向量或矩阵时,f作用在 x的每个分量上,结果为一个与 x具有相同形状的向量或矩阵 • Matlab 矩阵函数:expm、sqrtm、logm, funm funm(A,@cos)

  21. MATLAB的三角函数 • 三角函数

  22. MATLAB的基本数学函数 • 基本数学函数

  23. 取整函数与矩阵相关函数 • 取整函数 • 矩阵相关函数

  24. Matlab 程序设计介绍 • Matlab 是一种科学计算语言,但同时也具有和 C、 FORTRAN 等高级语言相类似的语言特征,能方便地实现程序控制。利用 Matlab 的程序控制功能,可以将有关Matlab 命令编成程序存储在一个文件中(M文件),然后运行该文件,Matlab 就会自动依次执行文件中的命令,直到全部命令执行完毕。 • 在 Matlab 程序设计中,要充分利用 Matlab 数据结构的特点,提供编程效率。

  25. M文件 • 用 Matlab 语言编写的程序称为 M文件,以“.m”为扩展名 • M文件是由若干 Matlab 命令组合在一起构成的,它可以完成某些操作,也可以实现某种算法 • 事实上,Matlab 提供的内部函数以及各种工具箱,都是利用Matlab 语言编写的 M文件 • 用户也可以结合自己的工作需要,开发自己的程序或工具箱 • M文件根据调用方式的不同可以分为两类: • Script file:命令文件/脚本文件 • Function file:函数文件

  26. 两类M文件的区别 • 命令文件没有输入参数,也不返回输出参数; 函数文件可以带输入参数,也可以返回输出参数 • 命令文件对 Matlab 当前工作空间的变量进行操作,文件中所有命令的执行结果也返回到当前工作空间中; 函数文件中定义的变量为局部变量,当函数执行完后,这些变量被清除 • 命令文件可以直接运行,在 Matlab 命令窗口中输入文件的名字就会顺序执行文件中的命令; 函数文件不能直接运行,要以函数调用的方式来调用

  27. 举例(一) 例:分别用命令文件和函数文件将华氏温度转化为摄氏温度。 (1) 命令文件:输入以下内容并以文件名 f2cs.m存盘 clear; %清除当前工作空间中的变量 f=input('Please input Fahrenheit temperature:'); c=5*(f-32)/9; fprintf('The Centigrade Temperature is %g\n', c); 在Matlab命令窗口中输入 f2cs,即可执行该命令文件。不用输入参数,也没有输出参数,执行完后,变量 c、f 仍保留在工作空间。(可用whos查看)

  28. 函数文件:建立函数文件 f2cf.m,内容如下: function c=f2cf(f) c=5*(f-32)/9; 在Matlab命令窗口中输入 >> f2cf(100) 调用该函数时,既有输入参数,又有输出参数;函数调用完后,变量 c、f 没有被保留在工作空间。

  29. M文件的建立与打开 • M文件是一个文本文件,可以用任何文本编辑器来建立和编辑,而一般使用 Matlab 自带的文本编辑器。 • 启动Matlab文本编辑器有三种方法: 1)菜单操作(New)2)命令操作(edit)3)命令按钮(快捷键) • 打开已有的M文件: 1)菜单操作(open)2)命令操作(edit 文件名)3)命令按钮(快捷键)4)双击M文件

  30. 关系运算 • 比较运算: • 比较两个变量的大小,结论是“真”则返回 “1”,结论为“假”则返回 “0”。 • “==”与“=”的区别:== 是比较两个变量,= 是赋值。 • 关系操作符能用来比较两个同样大小的矩阵,或用来比较一个矩阵和一个标量,在后一种情况,标量和矩阵中的每一个元素相比较。比较结果与矩阵大小一样。

  31. 关系运算 • 逻辑运算: • 相关函数: xor(x,y):异或运算 any(x):若向量 x中存在非零元素,则返回 1,否则返回 0 all(x): 若向量 x中所有元素非零,则返回 1,否则返回 0 若 x 为矩阵,则 any 和 all 按列运算,返回一个0-1向量

  32. 程序控制结构 程序控制结构有三种:顺序结构、选择结构和循环结构;任何复杂的程序都可以由这三种基本结构构成。 • 顺序结构 按排列顺序依次执行,直到程序的最后一个语句。这是最简单的一种程序结构,一般涉及数据的输入、数据的计算或处理、数据的输出等。 • 数据的输入: input A=input(提示信息);其中提示信息为字符串 A=input(提示信息,'s');允许用户输入字符串 name=input('What''s your name?','s')

  33. 顺序结构(续) • 数据的输出: disp disp(X); 其中 X 是字符串或矩阵 • 程序的暂停: pause pause(n); 其中 n 是延迟时间,以秒为单位;也可以直接使用pause,则将暂停程序,直到用户按任一键后继续。 pause off: 屏蔽程序中所有pause的作用; pause on: 打开pause的作用。 若想强行中止程序的运行,可以使用 Ctrl+c

  34. 选择结构 • 根据给定的条件是否成立而分别执行不同的语句 • if语句 • Matlab 用于实现选择结构的语句有 if和switch 语句 • 单分支 if expr(条件) statement(语句组) end • 双分支 if expr(条件) statement1(语句组1) else statement2(语句组2) end

  35. IF 语句 • 多分支: if expr1(条件 1) statement1(语句组 1) elseif expr2(条件 2) statement2(语句组 2) ... ... elseif exprm(条件 m) statementm(语句组 m) else statement(语句组) end elseif可以出现多个,但 else只能有一个!

  36. switch 语句 根据表达式的取值不同,分别执行不同的语句。 switch expr(表达式) case expr1(表达式 1) statement1(语句组 1) case expr2(表达式 2) statement2(语句组 2) ... ... case exprm(表达式 m) statementm(语句组 m) otherwise statement(语句组) end

  37. switch 语句(续) • 当任意一个分支的语句执行完后,直接执行 switch 语句后面的语句。 • switch 子句后面的表达式可以是一个标量或字符串;case 子句后面的表达式可以是标量或字符串,也可以是一个单元(cell),此时表达式的值等于该单元中的某个元素时,执行相应的语句组。

  38. 循环结构 • 循环结构是按照给定的条件,重复执行指定的语句 • for 语句 • Matlab 用于实现循环结构的语句有for语句和while语句 循环变量 for variable=expr statement(循环体语句) end expr可以是行向量,也可以是矩阵。 在 Matlab 编程中,采用循环会降低程序的执行速度,应尽量避免使用,或用其它方式代替,如向量运算等。

  39. while 循环 • while 循环: while expr(条件) statement(循环体语句) end • break和 continue语句 break 语句用于终止循环的执行。 continue 语句控制跳过循环体内的某些语句,继续下一次循环。 break和 continue一般与 if语句配合使用。 • 循环语句可以嵌套使用

  40. 函数文件 • 函数文件由 function 语句引导,其基本结构为: function输出形参表 =函数名(输入行参表) 注释说明部分(可选) 函数体语句(必须) • 其中以function开始的一行为引导行,表示该 M文件是函数文件。 • 函数名的命名规则与变量名相同(必须以字母开头)。 • 当输出行参多于一个时,用方括号括起来 • 函数文件名与函数名一定要统一 特别提示:添加注释是个良好的编程习惯。

  41. 几点说明 • 函数文件内定义的变量仅在函数文件内部起作用, 当函数文件执行完成后,这些内部变量将被清除 • return 语句 如果在函数文件中插入了 return语句,则执行到该语句时就结束函数的执行,程序流程转至调用该函数的位置。函数文件中可以不含 return语句,这时当被调用函数执行完成后就自动返回。

  42. 函数调用 函数文件编好后,就可以被其它 M文件调用了。 • 函数调用的一般格式 输出实参表 =函数名(输入实参表) 函数调用时,实参的顺序、个数必须与函数定义时的形参的顺序、个数一致。 • 函数可以嵌套调用,即一个函数可以被其它函数调用,甚至可以被它自身调用,此时称为递归调用。

  43. 举例(一) 例:利用函数的递归调用计算n! % 函数文件 factor.m functionf=factor(n) if (n<=1) f=1; else f=n*factor(n-1); end %命令文件 main.m %计算s=1!+2!+3!+4!+5! s=0; for i=1:5 s=s+factor(i); end fprintf(‘\n s=%g’,s)

  44. 局部变量 • 函数文件中的变量都是局部的,即一个函数文件中定义的变量不能被另一个函数文件或其它 M文件使用。 • 当函数调用完毕后,该函数文件中定义的所有局部变量都将被释放。 • 函数通过输入和输出参数与其它M文件进行数据传递。 • 如果在若干个函数中,都把某个变量定义为全局变量,则这些函数将公共使用这一变量。全局变量的作用域是整个Matlab工作空间,即全程有效,所有函数都可以对它存取和修改。定义全局变量是函数间传递信息的一种手段。

  45. 全局变量 • 全局变量的定义 global变量名列表 变量名列表中的各个变量用空格隔开,不能用逗号! 全局变量给函数间的数据传递带来了方便,但却破坏了函数对变量的封装,降低了程序的可读性,因而在结构化程序设计中,全局变量是不受欢迎的。特别是当程序较大,子程序较多时,全局变量将个程序调试和维护带来不便,故不提倡使用全局变量。

  46. 举例(二) 猜数游戏 首先由计算机随机产生一个 [1, 100] 之间的一个整数,然后由用户猜测所产生的这个数。根据用户猜测的情况给出不同的提示,如果猜测的数大于产生的数,则显示“High”,小于则显示“Low”,等于则显示“You won!”,同时退出游戏。用户最多有 7 次机会。

  47. Matlab绘图小结 平面绘图: plot • 基本原理:点  线

  48. Matlab绘图小结 例:y=sin(x), 0<x<2*pi >> x=[0:0.5:2*pi]; >> y=sin(x); >> plot(x,y,‘.')

  49. Matlab绘图小结 例:y=sin(x), 0<x<2*pi >> x=[0:0.5:2*pi]; >> y=sin(x); >> plot(x,y,‘.-')

  50. Matlab绘图小结 例:y=sin(x), 0<x<2*pi >> x=[0:0.1:2*pi]; >> y=sin(x); >> plot(x,y,‘.')

More Related