1.27k likes | 1.59k Views
MATLAB 入门与应用. 光电信息实验教学示范中心. 常见的数学工具软件. 在科学研究和工程设计中,数据分析、处理和图形绘制是不可避免的,有时还需要进行数学建模,实时控制和动态仿真等,如果用户直接用 C (C++, Visual C )、 Delphi 、 Java 、 Basic 、 Fortran 或等计算机语言高级来完成是非常不方便的。为此,有关计算机公司开发了许多软件来帮助用户提高效率。常见的相关软件有:. Mathematica Mathcad Maple Oringin Matlab. 1.1 认识 MATLAB.
E N D
MATLAB 入门与应用 光电信息实验教学示范中心
常见的数学工具软件 在科学研究和工程设计中,数据分析、处理和图形绘制是不可避免的,有时还需要进行数学建模,实时控制和动态仿真等,如果用户直接用C (C++, Visual C)、Delphi 、 Java、Basic、Fortran或等计算机语言高级来完成是非常不方便的。为此,有关计算机公司开发了许多软件来帮助用户提高效率。常见的相关软件有: • Mathematica • Mathcad • Maple • Oringin • Matlab
1.1 认识MATLAB • 1.1.1 MATLAB的历史 • 1.1.2 MATLAB的构成 • MATLAB的语言 • MATLAB的工作环境 • MATLAB的工具箱 • 1.1.3 MATLAB的特点
1.1.1 MATLAB的历史 MATLAB:英语Matrix(矩阵)和Laboratory(实 验室)两个单词前三个字母的组合 • 70年代:美国新墨西哥大学为矩阵运算软件包编写的接 • 口程序,是教学辅助软件 • 80年代初:出现第二版 ,具有数值计算、图示化功能 • 84年:Math Works公司成立,成为集数值计算、图形处 • 理等多功能数学应用商业化软件 • 89年: 发布基于Windows3.1版本:MATLAB for • WINDOWS • 93年: 推出MATLAB4.0 真正视窗环境功能加强 • 97年: 推出MATLAB5.X • 2001年:推出MATLAB6.X • 2004年:推出MATLAB7.X • ……
1.1.2 MATLAB的构成 • MATLAB 7.0的语言 • MATLAB7.0的工作环境 • MATLAB7.0的工具箱 • MATLAB7.0的API(应用程序编程接口)
MATLAB的语言 • 以向量、矩阵为基本的数据单元 • 有顺序、选择、循环等结构控制语句 • 有大量运算符 • 可以编写结构化、有面向对象特点的程序
MATLAB7.0的工作环境 • 命令控制窗口 • 图形处理窗口 • 程序编辑器 • 大量的M文件
MATLAB7.0工具箱(Toolboxes) • 信号处理(Signal Processing) • 控制系统(Control System) • 神经网络(Neural Networks) • 图象处理(Image Processing) • 模糊逻辑(Fuzzy Logic) • 小波(Wavelets) • 仿真(Simulink)
1.1.3 MATLAB7.0的特点 以矩阵作为数据操作的基本单位,语言灵活,功能强大 • 数值运算全面——数学、统计、科学运算 • 表示方法简单——方法自然,可以与Microsoft Word结合 • 丰富的工具箱
1.2 视窗下MATLAB的环境 • 1.2.1 MATLAB的命令控制窗口 • 1.2.2 MATLAB的数据显示格式 • 1.2.3 MATLAB的程序编辑器 • 1.2.4 MATLAB的变量浏览器 • 1.2.5 MATLAB的路径浏览器
1.3 初试MATLAB • 1.3.1 基本数学运算 • 1.3.2 变量 • 1.3.3 数学函数初步 • 1.3.4 复数初步
Ex.2 1.3.1 基本数学运算 例1:1+2+2^3 例2:硬盘5个,每个1100¥,CPU5个,每个1700¥,共计多少元?
1.3.2 变量 • 变量命名规则:1.变量名可以由任意的字母、数字或下划线组成,但必须以字母打头;2.变量名区分字母大小写;3.变量名最多不超过19个字符,第19个字符之后的字符将被忽略。 例如:x , x1 , x1y1 , cpu_number , average ,X23 ,是合法的变量; 而:1x , x#y , x:y , cpu-number , 动量p,就不是合法的变量名; 注意:x12≠X12 ,他们是两个不同的变量。
MATLAB的特殊变量 MATLAB有一些系统自己定义的变量,称为特殊变量 eps=2.2204e-0160 ; 防止分母为0 realmin=2.2251e-308
1.3.3 数学函数初步——常用数学函数 已知a=π/4,b=300,计算sin(a)和tg(b)
1.3.4 复数初步——复数运算 • MATLAB对复数运算的特点是,不必对复数作特殊处理,与一般的实数计算完全一样。 • 复数运算的结果还是表示为复数,即使结果是实数,MATLAB还是保留零虚数。 • 复数直角坐标形式 a+bi ,与极坐标形式 M∠θ 之间可以转换。 Ex.4已知 a=1-i ,b=1-i ,计算: x=a+b ;y=(a+b)2;给出x的实部与虚部 ;将 x 化为极坐标形式。
1.4 MATLAB的基本操作 • 1.4.1 MATLAB启动和工作空间 • 1.4.2 数据的存储和读取 • 1.4.3 命令窗口控制 • 1.4.4 文件的编写与管理 • 1.4.5 如何获得在线帮助
1.4.1 启动与工作空间 • MATLAB启动时将执行两个脚本文件:matlabrc.m和startup.m。其中matlabrc.m是系统自带的,用来设置图形窗口的缺省项,一般不需由用户改变。 startup.m由用户自己编辑生成,作为MATLAB启动时的设置。 • 工作空间:MATLAB启动后通过命令窗口与用户交互,在命令窗口输入的命令、变量,将保存在工作空间内,可以随时调用。查看工作空间中变量有以下方法: • (1)直接在命令窗口中键入变量名; • (2)用who或 whos 命令列出空间中的变量或变量名; • (3)从File菜单,弹出变量浏览器Workspace Browser。 只返回空间中的变量名 返回空间中的变量名、大小和类型
1.4.2 数据的存储与读取 数据的存储: (1)保存整个工作空间:1.用File菜单中的Save workspace as菜单项;2.在命令窗口键入 save worksp2(工作空间的所有变量存在文件worksp2中)3.在命令窗口键入 save worksp2 -ascii(工作空间的所有变量以8位ASCⅡ格式存在文件worksp2中) (2)保存个别变量:在命令窗口键入如下命令: 命令格式:Save文件名 变量名1 变量名2 … 存储格式 例:save date3 x y a -ascii -double 表示:将当前工作空间中的x、y和a三个变量以16位ASCⅡ格式保存到文件data3中。 (3)以上文件的扩展名为 . mat
数据的存储与读取 数据的读取:用save保存的数据可以用load载入(读取) (1)打开保存过的整个工作空间:1. 用File菜单中的load workspace as菜单项;2. 在命令窗口键入 load worksp2(读出存在文件worksp2中的工作空间) (2)打开保存过的个别变量:在命令窗口键入如下命令: 命令格式:load 文件名 变量名1 变量名2 … 例:load date3 x y a 表示:将保存在 mat 文件data3 中 x 、y 和 a 三个变量读出。 注意:保存数据不改变当前工作空间中的变量,但从文件中载入(读取)数据时,若当前空间与载入的工作空间具有相同的变量,则载入后的变量自动覆盖原来的变量。
1.4.3 命令窗口控制 除菜单外,MATLAB对命令窗口进行管理时,提供了一些命令:
1.4.4 M文件的编写与管理 M文件:为解决复杂问题,MATLAB 允许用户将命令、表达式写入到一个简单的文件中,然后由 MATLAB 打开执行,这些文件称为 M 文件,其扩展名为 . m 。 M文件的编写:分两步进行:(1)建立搜寻路径。目的是让MATLAB 能够找到用户的工作子目录。如,用户的工作子目录为 d 盘下的 user\work1,则可以用 path 命令将之加在原来 MATLAB 的搜寻路径之前或之后: path(path,’d:\user\work1’)%将自己的工作目录 d:\user\work1 加在 MATLAB 的搜寻路径之后 (2)切换目录。建立好搜索路径后,就可以用 cd 指令将目录切换到自己的工作目录下使用 MATLAB 了: cd d:\user\work1 %切换目录至用户自己的工作目录d:\user\work1 一般MATLAB会默认一个工作子目录,,用本方法可以将新建的工作子目录work1进入收索范围,即使现在选择的是默认工作子目录,也可以查找新建工作子目录work1 中的文件 改变(切换)目录后,MATLAB将只查找work1中的文件
M文件的编写与管理 M文件函数: Ex.5:input、keyboard、disp的使用。
M文件的编写与管理 M文件管理命令: 如 cd d:\matlab\ch11转换目录到: d盘matlab下的 ch11子目录 只能删除.m文件
1.4.5 如何获得在线帮助 • 从命令窗口获得帮助: • (1)使用help命令: 如要寻求有关函数wavread的帮助,只需在命令窗口键入 help wavread;当然,也可以只键入help。 • (2)使用lookfor命令: 格式为lookfor关键词。其中,关键词不一定必须是函数本身,只需含相关字母既可。 • 从菜单中获得帮助: • 单击命令窗口中help菜单中的help window选项,或直接在工具栏中单击“?”,会调出一个帮助窗口,单击help desk则会调用浏览器窗口,可以找到相关内容。也可以在help desk的对话栏中输入需要查找的内容,按“go”后进行查询。 例:查找函数 fft2的意义及用法
第二章 MATLAB的数组 数组是MATLAB的基础,本章将介绍数组的创建、基本运算和基本操作等,学好数组是掌握MATLAB的一个关键。 2.1 简单数组 2.2 创建数组 2.3 数组运算 2.4 数组操作 2.5 多维数组
2.1 简单数组 例:在x=[0,π]上每隔0.1π计算一个正弦值y=sin(x)。应该重复调用sin函数10次,从而得到: 显然,x是一个有序数,MATLAB可以用数组来表示有序数: X=[0,0.1 π,0.2 π,0.3 π,……,0.9 π, π](用,分隔) 或x=[0 0.1 π 0.2 π 0.3 π …… 0.9 π π](用空格分隔) 这种用一个数表示的一组有序数(或列表),叫做数组。 引入数组后,前面例子的计算,可以仅仅通过一次调用sin函数就完成。这与其他计算机语言不同。 MATLAB 有一列多行、一行多列、多列多行等数组,标量视为一列一行(1×1)的数组。 Ex. 6
2.2 创建数组 • 2.2.1 数组的访问形式 • 2.2.2 数组的构造 • 1. 创建行向量数组 • 2. 创建列向量数组 • 3. 创建多行、多列数组
2.2.2.1 创建行向量数组的方法 • 直接键入数组的每一个元素:只适用于元素很少时 • 冒号法:数组=(初值:增量:终值)(增量为1时可以将其省略) • 如:建立X=[0,0.1 π,0.2 π,0.3 π,……,0.9 π, π] • 可以用 x=(0:0.1*pi:pi) • 或 x=(0:0.1:1)*pi 来完成 • linspace法:数组=linspace(初值,终值,元素值个数) • 注意:这时是按元素个数线性分割的! • 如:上例可用 x=linspace(0,1,11)*pi 来完成 • logspace法:数组=logspace(初指数值,终指数值,元素值个数) • 注意:这时是按元素个数指数分割的! x=logspace(0,pi,11) x = Columns 1 through 7 1.0000 1.1213 1.2573 1.4098 1.5807 1.7725 1.9874 Columns 8 through 11 2.2285 2.4987 2.8018 3.1416
2.2.2.2 创建列向量数组的方法 • 直接键入数组 每个元素:数组=(元素1;元素2;……;元素n) • 冒号法:先用数组a=(初值:增量:终值)产生行向量数组a • 再用 数组b=a’ 将行向量数组 a 变为列向量数组 • linspace法:先用数组a=linspace(初值,终值,元素值个数)产生行向量数组a,再用 数组b=a’ 将行向量数组a变为列向量数组b • logspace法:先用 数组a=logspace(初指数值,终指数值,元素值个数)产生行向量数组a,再用 数组b=a’ 将行向量数组 a 变为列向量数组b。 • 注意: 算子( ’ )、(.’)对实数数组,进行的都是转置运算 • 算子( ’ )对复数数组,进行的是共轭转置运算, • 而算子( .’)对复数数组 ,进行的只是转置运算。 Ex.7
2.2.2.3 创建多行多列数组 • 在创建多行多列数组时: • 逗号或空格:用于分隔在同一行的元素 • 分号:用于分开不同的行,在输入元素时,按回车也默认为开始新的一行 • 注意:MATLAB严格要求同一数组,所有的行有相同的列数 • 例如:A=[1,2,3 ;4,5,6]创建的是一个 2 × 3的数组: • A= 1 2 3 • 4 5 6 • 一数组和零数组:元素全为1的数组叫1数组,全为0叫0数组。 • MATLAB用 ones(n)和ones(r,c)函数分别创建一个n ×n和r ×c 1数组,用zeros(n)和zeros(r,c)创建n ×n和r ×c 0数组 Ex. 8
2.3 数组运算 • 数组运算是对数组的每一个元素进行同样的运算 • 标量—数组运算:用一个标量对数组进行加、减、乘、除运算,就是该标量对数组的每一个元素进行同样的运算 • 运算符号为:+ 、-、*、/或\ Ex.9 • 数组—数组运算:两个具有相同维数的数组相加、减、乘、除和幂运算时,是以元素对元素来进行的。 • 运算符号分别为:+ 、-、.*、./、.\和.^ Ex.10 • 数组的访问(调用): • 如果数组 A 已存在,可以对其中的一个或多个元素进行问 • 例如:A(2 , 5) 调用的是该数组第二行第5列的元素 • A(2 , 5:8) 调用的是该数组第二行第5到第8列的元素。 Ex.11
2.4 数组操作 对数组的操作包括插入、重新排列、提取、拉长、置空等,是有效使用 MATLAB 的关键。本节内容有: 2.4.1.1 数组的基本操作 2.4.1.2 数组操作 2.4.1.3 数组编址小结 2.4.2. 按指定条件求子数组 2.4.3 数组的规模 2.4.4 数组操作函数
2.4.1.1 数组的基本操作 • 插入:设有一个3×3数组A,操作 A(2,3)=0 可使数组 A的第2行第 3列上的元素置为0; 而操作 A(3,6)=1使数组A的第3行第 6列上的元素置为1,且不存在的元素自动插入0 。 Ex.12 • 重新排列:例 B=A(3:-1:1,1:3),3:-1:1表示从A的第3行,每次递减1到第1行,1:3表示从A的第1列,每次递增1到第3列。提取、按列拉长:C=A(:)每次从A提取1列拉长成一个列数组C。 Ex.13 Ex.14 • 置空:删除数组的某行或某列,但 MATLAB 只能删除数组整个行(或整个列)。格式为:B(:,n)=[]删除数组B 的第n列, 和B(m,:)=[]删除数组B的第m 行。 Ex.15
插入 重新排列
重新排列 置空
a11 a12 a13 … a1m a21 a22 a23 … a2m an1 an2 an3 … anm 2.4.1.2 数组操作 • Tony’sTrick:重复提取并复制向量,以此生成数组的方法。 • 如:A(:,[n,n,n,n]),表示对数组A的第n列重复提取4次 • A([m,m,m],:),表示对数组A的第m行重复提取3次 Ex.16 • 用单个下标操作矩阵:从第1列第1个元素起,给数组排序编址。如:A(n)调用的是数组A序号为n 的元素,A(n:m),调用的是数组A序号为n 到m的元素。 Ex.17 • 通过逻辑数组操作矩阵:MATLAB允许用逻辑操作数组,但要求逻辑数组与被访问者的规模一样,结果为真时值为1 ,否则为0 。如:abs(x)>a,给出数组 x 中绝对值大于 a 元素,符合条件(结果为真)时为1 ,否则为0 。A=x(abs(x)>=a),又将数组 x 中符合条件的元素的值,赋予数组A 。 Ex.18
重新排列 重新排列