第1章 Matlab操作基础

39
第1 MATLAB 第第第第

description

CHAPTER 1 BASIC

Transcript of 第1章 Matlab操作基础

Page 1: 第1章  Matlab操作基础

第1章 MATLAB操作基础

Page 2: 第1章  Matlab操作基础

1.1 MATLAB 概述• 1.1.1 MATLAB 的发展

1984 年, MATLAB 第 1 版 (DOS 版 ) 1992 年, MATLAB4.0 版

1994 年, MATLAB 4.2 版 1997 年, MATLAB 5.0 版 1999 年, MATLAB 5.3 版 2000 年, MATLAB 6.0 版 2001 年, MATLAB 6.1 版 2002 年, MATLAB 6.5 版 2004 年, MATLAB 7.0 版

Page 3: 第1章  Matlab操作基础

MATLAB 的主要功能1 .数值计算和符号计算功能MATLAB 以矩阵作为数据操作的基本单位,还提供了十分丰富的数值计算函数。MATLAB 和著名的符号计算语言 Maple 相结合,使得 MATLAB 具有符号计算功能。

Page 4: 第1章  Matlab操作基础

2 .绘图功能MATLAB 提供了两个层次的绘图操作:一种是对图形句柄进行的低层绘图操作,另一种是建立在低层绘图操作之上的高层绘图操作。

Page 5: 第1章  Matlab操作基础

• 3 .编程语言MATLAB 具有程序结构控制、函数调用、数据结构、输入输出、面向对象等程序语言特征,而且简单易学

• MATLAB 包含两部分内容:基本部分和各种可选的工具箱。MATLAB 工具箱分为两大类:功能性工具箱和学科性工具箱。

Page 6: 第1章  Matlab操作基础

初识 MATLAB例 1-1 绘制正弦曲线和余弦曲线。x=[0:0.5:360]*pi/180;plot(x,sin(x),x,cos(x));

• 例 1-2 求方程 3x4+7x3 +9x2-23=0 的全部根。

p=[3,7,9,0,-23]; % 建立多项式系数向量x=roots(p) % 求根

ex0101

ex0102

Page 7: 第1章  Matlab操作基础

• 例 1-3 求积分quad('x.*log(1+x)',0,1)

• 例 1-4 求解线性方程组。a=[2,-3,1;8,3,2;45,1,-9]; b=[4;2;17]; x=inv(a)*b

ex0104

ex0103

Page 8: 第1章  Matlab操作基础

1.2 MATLAB 的运行环境与安装• 1.2.1 MATLAB 的运行环境

硬件环境:(1) CPU (2) 内存(3) 硬盘(4) CD-ROM 驱动器和鼠标。软件环境:(1) Windows 98/NT/2000 或 Windows XP(2) 其他软件根据需要选用

Page 9: 第1章  Matlab操作基础

当 MATLAB 安装完毕并首次启动时,展现在屏幕上的界面为 MATLAB 的默认界面,如右图所示。

Page 10: 第1章  Matlab操作基础

1.3 MATLAB 运算 1.3.1 算术运算1 .基本算术运算 MATLAB 的基本算术运算有:+ ( 加 ) 、- ( 减 ) 、 *( 乘 ) 、 /( 右除 ) 、 \( 左除 ) 、^( 乘方 ) 。注意,运算是在矩阵意义下进行的,单个数据的算术运算只是一种特例。

Page 11: 第1章  Matlab操作基础

变量• 1. 变量的命名规则• 变量名区分字母的大小写。例如,“ a” 和“ A”

是不同的变量。• 变量名不能超过 63 个字符,第 63 个字符后的字

符被忽略,对于 MATLAB6.5 版以前的变量名不能超过 31 个字符。

• 变量名必须以字母开头,变量名的组成可以是任意字母、数字或者下划线,但不能含有空格和标点符号 ( 如,。 % 等 ) 。例如,“ 6ABC” 、“ AB%C” 都是不合法的变量名。

• 关键字 ( 如 if 、 while 等 ) 不能作为变量名。

Page 12: 第1章  Matlab操作基础

2. 特殊变量MATLAB 有一些自己的特殊变量,当 MATLAB 启

动时驻留在内存。i=j=特殊变量 取值

ans 运算结果的默认变量名pi 圆周率 π

eps 计算机的最小数flops 浮点运算数inf 无穷大,如 1/0

NaN或 nan 非数,如 0/0、∞ /∞、 0×∞

i或 j 虚数单位 (-1)^1/2

nargin 函数的输入变量数目nargout 函数的输出变量数目realmin 最小的可用正实数realmax 最大的可用正实数

Page 13: 第1章  Matlab操作基础

(1) 矩阵加减运算 假定有两个矩阵 A 和 B ,则可以由 A+B 和 A-B实现矩阵的加减运算。运算规则是:若 A 和 B 矩阵的维数相同,则可以执行矩阵的加减运算, A和 B 矩阵的相应元素相加减。如果 A 与 B 的维数不相同,则 MATLAB 将给出错误信息,提示用户两个矩阵的维数不匹配。

 *-允许一个数加上一个矩阵

ex0105

Page 14: 第1章  Matlab操作基础

(2) 矩阵乘法 假定有两个矩阵 A 和 B ,若 A 为 m×n 矩阵, B 为 n×p 矩阵,则 C=A*B 为 m×p 矩阵。

Page 15: 第1章  Matlab操作基础

(3) 矩阵除法在 MATLAB 中,有两种矩阵除法运算: \和 / ,分别表示左除和右除。如果 A 矩阵是非奇异方阵,则 A\B 和 B/A 运算可以实现。A\B 等效于 A 的逆左乘 B 矩阵,也就是 inv(A)*B ,而 B/A 等效于 A 矩阵的逆右乘 B矩阵,也就是 B*inv(A) 。对于含有标量的运算,两种除法运算的结果相同,如 3/4 和 4\3 有相同的值,都等于 0.75 。又如,设 a=[10.5,25] ,则 a/5=5\a=[2.1000 5.0000] 。对于矩阵来说,左除和右除表示两种不同的除数矩阵和被除数矩阵的关系。对于矩阵运算,一般 A\B≠B/A 。

Page 16: 第1章  Matlab操作基础

(4) 矩阵的乘方 一个矩阵的乘方运算可以表示成 A^x ,要求 A 为方阵, x 为标量。2 .点运算 在 MATLAB 中,有一种特殊的运算,因为其运算符是在有关算术运算符前面加点,所以叫点运算。点运算符有 .* 、 ./ 、 .\ 和 .^ 。两矩阵进行点运算是指它们的对应元素进行相关运算,要求两矩阵的维参数相同。

ex0106

Page 17: 第1章  Matlab操作基础

1.3.2 关系运算 MATLAB 提供了 6 种关系运算符: <( 小于 ) 、 <=( 小于或等于 ) 、 >( 大于 ) 、>=( 大于或等于 ) 、 ==( 等于 ) 、~ =( 不等于 ) 。它们的含义不难理解,但要注意其书写方法与数学中的不等式符号不尽相同。

Page 18: 第1章  Matlab操作基础

关系运算符的运算法则为: (1) 当两个比较量是标量时,直接比较两数的大小。若关系成立,关系表达式结果为1 ,否则为 0 。 (2) 当参与比较的量是两个维数相同的矩阵时,比较是对两矩阵相同位置的元素按标量关系运算规则逐个进行,并给出元素比较结果。最终的关系运算的结果是一个维数与原矩阵相同的矩阵,它的元素由 0 或 1 组成。

ex0107

Page 19: 第1章  Matlab操作基础

(3) 当参与比较的一个是标量,而另一个是矩阵时,则把标量与矩阵的每一个元素按标量关系运算规则逐个比较,并给出元素比较结果。最终的关系运算的结果是一个维数与原矩阵相同的矩阵,它的元素由 0或 1 组成。

Page 20: 第1章  Matlab操作基础

1.3.3 逻辑运算 MATLAB 提供了 3 种逻辑运算符: &( 与 ) 、 |( 或 )和~ ( 非 ) 。 逻辑运算的运算法则为: (1) 在逻辑运算中,确认非零元素为真,用 1 表示,零元素为假,用 0 表示。 (2) 设参与逻辑运算的是两个标量 a 和 b ,那么, a&b a,b 全为非零时,运算结果为 1 ,否则为 0 。 a|b a,b 中只要有一个非零,运算结果为 1 。 ~ a 当 a 是零时,运算结果为 1;当 a 非零时,运算结果为 0 。

Page 21: 第1章  Matlab操作基础

(3) 若参与逻辑运算的是两个同维矩阵,那么运算将对矩阵相同位置上的元素按标量规则逐个进行。最终运算结果是一个与原矩阵同维的矩阵,其元素由 1 或 0 组成。 (4) 若参与逻辑运算的一个是标量,一个是矩阵,那么运算将在标量与矩阵中的每个元素之间按标量规则逐个进行。最终运算结果是一个与矩阵同维的矩阵,其元素由 1 或 0 组成。

Page 22: 第1章  Matlab操作基础

(5) 逻辑非是单目运算符,也服从矩阵运算规则。(6) 在算术、关系、逻辑运算中,算术运算优先级最高,逻辑运算优先级最低。

Page 23: 第1章  Matlab操作基础

一维数组(向量)的创建

• 在命令窗口中直接输入向量

• 等差元素向量的生成

Page 24: 第1章  Matlab操作基础

( 1 )在命令窗口中直接输入向量

• 在 MATLAB 7 中,生成向量最简单的方法就是在命令窗口中按一定格式直接输入。输入的格式要求是,向量元素用“ [ ]” 括起来,元素之间用空格、逗号或者分号相隔。需要注意的是,用它们相隔生成的向量形式是不相同的:用空格或逗号生成行向量;用分号生成列向量。

>> a2=[15,21,27,93,101];>> a1=[15;21;27;93;101];>> a1a1 = 15 21 27 93 101>> a2a2 = 15 21 27 93 101>>

Page 25: 第1章  Matlab操作基础

( 2 )等差元素向量的生成

• 当向量的元素过多,同时向量各元素有等差的规律,此时采用直接输入法将过于繁琐。针对该种情况 ,可以使用冒号 (:) 和 linspace 函数来生成等差元素向量。

• >> vec1=10:5:60• vec1 =• 10 15 20 25 30 35

40 45 50 55 60• >> vec2=linspace (10,60,11)• vec2 =• 10 15 20 25 30 35

40 45 50 55 60

Page 26: 第1章  Matlab操作基础

(3) 向量与数的四则运算

• 向量与数的加法 ( 减法 ) :向量中的每个元素与数的加法 ( 减法 )运算。

• 向量与数的乘法 ( 除法 ) :向量中的每个元素与数的乘法 ( 除法 )运算。

• >> vec1=80:-9:10• vec1 =• 80 71 62 53 44 3

5 26 17• >> vec1+101• ans =• 181 172 163 154 145

136 127 118• >>

Page 27: 第1章  Matlab操作基础

(4) 向量与向量之间的加减运算 • 向量与向量的加法 ( 减法 ) 运算:向量中的每个元

素与另一个向量中相对应的元素的加法 ( 减法 ) 运算。

• >> vec1=linspace(200,500,7)• >> vec2=linspace(900,600,7)• >> vec3=vec1+vec2• vec3 =• Columns 1 through 5 • 1100 1100 1100 1100 1100• Columns 6 through 7 • 1100 1100• >>

Page 28: 第1章  Matlab操作基础

点运算 : 对应元素运算

>> x1=[11 22 33 44]

>> x2=[1,2,3,4]

>> x1.*x2

11 44 99 176

>>x1*x2

??? Error using ==> *

Inner matrix dimensions must agree.

Page 29: 第1章  Matlab操作基础

A=[1 2 3; 4 5 6; 7 8 9];B=[1 4 7; 2 5 8; 3 6 9];

A*B

ans=

14 32 50

32 77 122

50 122 194

A.*B

ans=

1 8 21

8 25 48

21 48 81

Page 30: 第1章  Matlab操作基础

A\B=A^-1*B

A.\B=

1.0000 2.0000 2.3333

0.5000 1.0000 1.3333

0.4286 0.7500 1.0000

A=[1 2 3; 4 5 6; 7 8 9];B=[1 4 7; 2 5 8; 3 6 9];

Page 31: 第1章  Matlab操作基础

2. 数组及其运算 • 数组寻址和排序 • 数组的基本数值运算 • 数组的关系运算 • 数组的逻辑运算

Page 32: 第1章  Matlab操作基础

( 1 ) 数组寻址和排序 • 通过对数组下标的访问来实现数组寻址

>> A=rand(1,5)

A =

0.9501 0.2311 0.6068 0.4860 0.8913

>>

>> A(4)

ans =

0.4860

>> >> A(2:3)

ans =

0.2311 0.6068

Page 33: 第1章  Matlab操作基础

( 2 )数组的基本数值运算

• 数组的加法 ( 减法 )

• 数组的乘法 ( 除法 )

• 数组的乘方

Page 34: 第1章  Matlab操作基础

数值运算举例• 加减法

>> X=[1 4 7];

>> Y=[2 5 8];

>> Z=X-Y

Z =

-1 -1 -1

>> V=X+Y

V =

3 9 15

>>

• 乘方>> X=[1 4 7]

X =

1 4 7

>> Y=[2 5 8]

Y =

2 5 8

>> Z=X.^Y

Z =

1 1024 5764801

Page 35: 第1章  Matlab操作基础

M- 文件M -文件:  用 MATLAB 语言编写的,可以在 MATLAB

环境中运行的程序

ex0108

Page 36: 第1章  Matlab操作基础

表 1.4 命令窗口中行编辑的常用操作键键名 作用 键名 作用↑ 向前调回已输入过

的命令行Home 使光标移到当前行的

开头↓ 向后调回已输入过

的命令行End 使光标移到当前行的

末尾← 在当前行中左移光

标Delete 删去光标右边的字符

→ 在当前行中右移光标

Backspace 删去光标左边的字符

PageUp 向前翻阅当前窗口中的内容

Esc 清除当前行的全部内容

Page Down向后翻阅当前窗口中的内容

CTRL+C中断MATLAB命令的运行

Page 37: 第1章  Matlab操作基础

表 1.5 MATLAB常用标点符号的功能名称 符号 功能

空格 用于输入变量之间的分隔符以及数组行元素之间的分隔符。

逗号 ,用于要显示计算结果的命令之间的分隔符;用于输入变量之间的分隔符;用于数组行元素之间的分隔符。

点号 . 用于数值中的小数点。

分号 ;用于不显示计算结果命令行的结尾;用于不显示计算结果命令之间的分隔符;用于数组元素行之间的分隔符。

冒号 :用于生成一维数值数组,表示一维数组的全部元素或多维数组的某一维的全部元素。

百分号 % 用于注释的前面,在它后面的命令不需要执行。

单引号 ‘ ’ 用于括住字符串。

圆括号 ( )用于引用数组元素;用于函数输入变量列表;用于确定算术运算的先后次序。

方括号 [ ] 用于构成向量和矩阵;用于函数输出列表。

花括号 { } 用于构成元胞数组。

下划线 _ 用于一个变量、函数或文件名中的连字符。

续行号 … 用于把后面的行与该行连接以构成一个较长的命令。

Page 38: 第1章  Matlab操作基础

例:

>>total=40000,disk=30000;tape=1000

>>average=total/...

disk

>>average/di…

sk

Page 39: 第1章  Matlab操作基础