第 2 章 MATLAB 数据

64
第2第 MATLAB 第第 §2.1 矩矩矩矩矩 §2.2 矩矩矩矩 §2.3 矩矩矩矩矩矩矩矩矩 §2.4 MATLAB 矩矩 矩矩矩矩 §2.5 MATLAB 矩矩矩矩 §2.6 矩矩矩矩矩矩矩

description

第 2 章 MATLAB 数据. § 2.1 矩阵的创建 § 2.2 算术运算 § 2.3 关系运算和逻辑运算 § 2.4 MATLAB 矩阵 、数组函数 § 2.5 MATLAB 矩阵分解 § 2.6 矩阵的特殊操作. 补充: 向量、矩阵、数组的定义: 1 )把用下标表示次序的标量数的集合称为矩阵或数组,而向量是一类特殊的矩阵; - PowerPoint PPT Presentation

Transcript of 第 2 章 MATLAB 数据

Page 1: 第 2 章   MATLAB 数据

第 2 章 MATLAB 数据 §2.1 矩阵的创建 §2.2 算术运算 §2.3 关系运算和逻辑运算 §2.4 MATLAB矩阵、数组函数 §2.5 MATLAB矩阵分解 §2.6 矩阵的特殊操作

Page 2: 第 2 章   MATLAB 数据

补充:向量、矩阵、数组的定义: 1 )把用下标表示次序的标量数的集合称为矩阵或数组,而向量是一类特殊的矩阵; 2 )矩阵和数组可以互换调用,准确说,矩阵是指以实数或复数为元素的长方形数组。从孤立的数的集合角度看,不管是矩阵还是数组,它们所指的并没有什么不同;但从运算角度看,矩阵运算和数组运算是不同的,在 matlab 中,矩阵运算是从矩阵的整体出发,依照线性运算规则进行,数组运算是从数组的元素出发,针对每个元素进行计算。

Page 3: 第 2 章   MATLAB 数据

2.1 矩阵的创建一、矩阵创建的原则:1 、矩阵的元素必须在“ [ ]” 中;2 、矩阵的同行元素之间用空格或“,”隔开;3 、矩阵的行与行之间用“;”或回车符隔开;4 、矩阵的尺寸不必预先定义;5 、矩阵元素可以是数值、变量、表达式或函数。

Page 4: 第 2 章   MATLAB 数据

例 2.1 创建矩阵

>>x=[1 2 3;4 5 6;7 8 9]>>x=[1 2 3

4 5 6 7 8 9]

>>x=[a b c;e f g;u v w]

>>x=[1 2 3;4 5 6]; y=[2 3 4;5 6 7]>>Q=x*y

>>a=2;b=3>>x=a*b

Page 5: 第 2 章   MATLAB 数据

2.1 矩阵的创建二、变量 与赋值

1 、变量的命名在 MATLAB 中,变量名是以字母开头,后接

字母、数字或下划线的字符序列,最多 63 个字符。在 MATLAB 中,变量名区分字母的大

小写。 MATLAB 提供的标准函数名以及命令名必须用小写字母。

例: myexamp 、 MYexamp 、 MYEXAMP

注意注意

Page 6: 第 2 章   MATLAB 数据

2 、 赋值语句 MATLAB 赋值语句有两种格式:

2.1 矩阵的创建

变量 = 表达式(或数)

表达式

Page 7: 第 2 章   MATLAB 数据

【例 2.2 】 x = [1,2,3;4,5,6;7,8,9]

与 [1,2,3;4,5,6;7,8,9] 。

【例 2.3 】计算 的

值,并将结果赋给变量 x ,后显示出结果。

i27147cos5 0

注意注意 pi 、 i 是 matlab 定义的变量,分别表示圆周率和虚数单位!

Page 8: 第 2 章   MATLAB 数据

2 、预定义变量预定义变量 含义 预定义变量 含义ans 计算结果的缺省 margin 函数输入参数个数eps 机器零阈值 nergout 函数输出参数个数pi 圆周率的近似值 realmax 最大正实数i 、 j 虚数单位 realmin 最小正实数inf 、 Inf 无穷大 lasterr 存放最新错误信息NaN 、 nan 非数 lastwarn 存放最新警告信息

2.1 矩阵的创建

Page 9: 第 2 章   MATLAB 数据

三、矩阵的建立

1、直接输入法

2、通过M文件创建矩阵

3、通过函数创建矩阵

4、通过数据文件创建矩阵

2.1 矩阵的创建

Page 10: 第 2 章   MATLAB 数据

三、矩阵的建立1 、直接输入法 从键盘上直接输入矩阵的元素。只要遵

循矩阵创建原则直接输入即可,如果不希望显示结果,在命令行的最后加分号“;”

适用于所有的操作,包括程序设计

注意注意

Page 11: 第 2 章   MATLAB 数据

三、矩阵的建立 2 、通过 M 文件创建矩阵

对于比较大且复杂的矩阵,有专门的 M文件编辑器

方法方法 ① 直接启动② 在命令窗口输入命令 edit 。

Page 12: 第 2 章   MATLAB 数据

三、矩阵的建立 3 、通过函数创建矩阵

利用 matlab 的内部函数或用户自定义函数创建矩阵

例 2.4 创建 0 到 2pi 间的正弦函数矩阵>>x=0:pi/4:2*pi; % 创建了 0 到 2pi 间隔

为 pi/4 的自变量>>y=sin(x) % 得到正弦函数值输出结果(略)

Page 13: 第 2 章   MATLAB 数据

三、矩阵的建立 4 、通过数据文件创建矩阵

matlab 可以处理的数据包括:文本文件、 .mat 数据文件、 .xls 文件、图像文件、声音文件。

这些文件都是以矩阵的形式存储在工作空间中的

注意注意

Page 14: 第 2 章   MATLAB 数据

§2.2 矩阵和数组的算术运算 一、矩阵和数组的加减运算

二、矩阵的乘法三、数组的乘法四、矩阵除法

五、数组的除法六、点运算七、幂运算八、矩阵的转置

注意注意 这些运算是在矩阵意义下进行的,单个数据的算术运算只是一种特殊!

Page 15: 第 2 章   MATLAB 数据

2.2 矩阵和数组的算术运算 一、矩阵和数组的加减运

A±BA±B

注意注意 A 、 B 的阶数不同,会给出错误信息,提示用户阶数不匹配!

Page 16: 第 2 章   MATLAB 数据

例 2.5 >>a=[1 2 3;4 5 6; 7 8 9];b=[1 1 1];

>>c=a-b

例 2.6 >>c=a+b

Page 17: 第 2 章   MATLAB 数据

2.2 矩阵和数组的算术运算 二、矩阵的乘法

),...,1;,...,1(1

pjmibaC kj

n

kikij

注意注意 A 为 m×n , B 为 n×p ,则C 为 m×p (必须有相邻的公共阶)

Page 18: 第 2 章   MATLAB 数据

例 2.7 >>A=[1 2 3;4 5 6;7 8 9];B=[1 2;3 0;7 4]; >>C=A*B

例 2.8 a=rand(3)b=rand(3)c=a/bd=b\a

Page 19: 第 2 章   MATLAB 数据

§2.2 矩阵和数组的算术运算 三、数组的乘法

BAC

注意

注意

A 、 B 数组必须有相同的阶数,则A.*B 表示 A 和 B 中对应元素之间相乘★与矩阵的乘法相同?

Page 20: 第 2 章   MATLAB 数据

例 2.9 >>a=[1 2 3];b=[4 5 6];

>>c=a.*b

Page 21: 第 2 章   MATLAB 数据

§2.2 矩阵和数组的算术运算 四、矩阵除法

abD

bainvCbaC

/

*)(\

一般选择右除

Page 22: 第 2 章   MATLAB 数据

例 2.10 >>a=[1 2 3;4 5 6;7 8 9];

>>b=[4 3 2;7 5 1;12 7 92];

>>c1=a\b;c2=b/a;c3=a/b

Page 23: 第 2 章   MATLAB 数据

2.2 矩阵和数组的算术运算 五、数组的除法

C=a.\b 与 C=a./b说明: a 与 b 的阶数必须相同。 a.\b表示 b 中的元素分别除以 a 中相应的元素。

Page 24: 第 2 章   MATLAB 数据

例 2.11 >>a=[1 2 3];b=[4 5 6];

>>c=a.\b

>>d=b.\a

Page 25: 第 2 章   MATLAB 数据

§2.2 矩阵和数组的算术运算 六、点运算

C = A.*B C=A./B

C=A.\B C=A.^B

Page 26: 第 2 章   MATLAB 数据

§2.2 矩阵和数组的算术运算 七、幂运算

C=A^B C=A.^BC=A^B C=A.^B

Page 27: 第 2 章   MATLAB 数据

例 2.12 >>a=[1 2 3];b=[4 5 6]; >>c=a^b

例 2.13 >>a=[1 2 3];b=[4 5 6]; >>c=a.^b

例 2.14 >>a=[1 2 3];b=2; >>c=a^2

例 2.15 >>a=[1 2 3];b=2; >c=a.^2

Page 28: 第 2 章   MATLAB 数据

总结:对矩阵的幂运算, a 、 b 不能同时为矩阵,必须有一个标量;而数组的幂运算是对其元素进行幂运算的。

Page 29: 第 2 章   MATLAB 数据

2.2 矩阵和数组的算术运算 八、矩阵的转置

C=A’ C=A.’C=A’ C=A.’

Page 30: 第 2 章   MATLAB 数据

例 2.16 >>a=[1 2 3

4 5 6

7 8 9]

>>c=a’

例 2.17 ①>>a=[1+2i 3+4i]>>c1=a’ %……

②>>c2=a.’ %…… ③>>c3=conj(a’) %

Page 31: 第 2 章   MATLAB 数据

§2.3 矩阵和数组的关系运算和逻辑运算

一、运算关系二、逻辑运算三、逻辑函数和关系函数

Page 32: 第 2 章   MATLAB 数据

一、运算关系

运算符 功能 运算符 功能

< 小于 >= 大于等于

<= 小于等于 == 等于

> 大于 ~= 不等于

§2.3 矩阵和数组的关系运算和逻辑运算

Page 33: 第 2 章   MATLAB 数据

例 2.18 >>a=[0 -1 2];b=[-3 1 2];

①>>a<b

②>>a<=b

③>>a=2;b=[1 2 3];

>>a~=b

Page 34: 第 2 章   MATLAB 数据

总结:关系运算法则:①当两个比较量是标量时,直接比较两数的大小,若关系成立,关系表达式结果为 1 ,反之为 0 ;

Page 35: 第 2 章   MATLAB 数据

总结:关系运算法则:②当参与比较的量是两个维数相同的矩阵时,比较的元素按标量关系元素规则逐个进行,并给出元素的比较结果。最终关系元素的结果是一个维数与原矩阵相同的矩阵,它的元素由 1 或 0 组成。

Page 36: 第 2 章   MATLAB 数据

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

Page 37: 第 2 章   MATLAB 数据

二、逻辑运算 逻辑运算符: &( 与 ) 、 |( 或 ) 、 ~( 非 )

§2.3 矩阵和数组的关系运算和逻辑运算

与其他计算机语言基本一致

Page 38: 第 2 章   MATLAB 数据

逻辑运算法则:① 在逻辑运算中,确认非零元素为真,用 1表示;零元素为假,用 0 表示② 设参与逻辑运算的是两个标量 a 、 b ,那么a&b a 、 b全非零时,结果为 1 ,否则为 0 ;a|b a 、 b 中只要有一个非零,结果为 1 ,反之为 0~ a 当 a 为零时,结果为 1 ,反之为 0 。

Page 39: 第 2 章   MATLAB 数据

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

Page 40: 第 2 章   MATLAB 数据

逻辑运算法则:

⑤逻辑运算服从矩阵运算规则;

⑥在算术、关系、逻辑运算中,算术运算优先级最高,逻辑运算优先级最低。

Page 41: 第 2 章   MATLAB 数据

三、逻辑函数和关系函数

§2.3 矩阵和数组的关系运算和逻辑运算

all(x) find(x)

检查 x 是否全为 1

找出非零元素的位置标识

Page 42: 第 2 章   MATLAB 数据

例 2.20 建立矩阵 A ,然后找出大于 4 的元素位置

( 1 )建立 A

>>A=[4 -6 5 -54 0 6

56 0 67 -45 0]

( 2 )找出大于 4 的元素位置>>find(A>4)

Page 43: 第 2 章   MATLAB 数据

§2.4 矩阵函数与数组函数一、矩阵函数二、通用函数

Page 44: 第 2 章   MATLAB 数据

一、矩阵函数matlab 提供了大量的矩阵函数,如特征值、奇异值的计算、条件数、范数、矩阵的秩和矩阵的空间运算等inv (逆)、 pinv (伪逆)等

§2.4 矩阵函数与数组函数

参见教材 P36 表 3

参见教材 P36 表 3

Page 45: 第 2 章   MATLAB 数据

例 2.21 矩阵 a 为 ,计算 a 的特

征值、特征矢量。

987

654

321

输入矩阵,计算 [c,d]=eig(a)[c,d]=eig(a)

>>a=[1 2 3;4 5 6;7 8 9];>>[c,d]=eig(a)

Page 46: 第 2 章   MATLAB 数据

例 2.22 矩阵 a 为 ,计算 a 的

逆矩阵、伪逆矩阵。

987

654

321

输入矩阵,计算 c=inv(a);d=pinv(a)c=inv(a);d=pinv(a)

>>a=[1 2 3;4 5 6;7 8 9];>>c=inv(a) % 这是严重的变态矩阵>>d=pinv(a)

Page 47: 第 2 章   MATLAB 数据

二、通用函数§2.4 矩阵函数与数组函数

通用函

数学函数: sin 、 cos 、 log等

特殊函数: erf 、 cross 、 cart2sph

教材 P38 表 4 表 5教材 P38 表 4 表 5

Page 48: 第 2 章   MATLAB 数据

§2.5 矩阵分解一、特征值分解

特征值与特征向

量 V=eig(a)

[v,d]=eig(a)

[v,d]=eig(a,nobalance)

[v,d]=eig(a,b)

直接求 a 的全部特征值

特征值 v 和特征向量 d

关闭平衡关闭平衡

广义特征值分解

Page 49: 第 2 章   MATLAB 数据

二、奇异值分解

§2.5 矩阵分解

[u,sv]=svd(a) or [us,v]=svd(a)[u,sv]=svd(a) or [us,v]=svd(a)

例 2.23 对 a=[1 1] 进行奇异值分解>>a=[1 1];>>[u,s,v]=svd(a)

Page 50: 第 2 章   MATLAB 数据

三、 LU 分解

§2.5 矩阵分解

[l,u]=lu(a)

例 2.24 P40 “ 例 2-22”a=[1 2 3;4 5 6;7 8 9];[l,u]=lu(a)

Page 51: 第 2 章   MATLAB 数据

§2.6 矩阵的特殊操作

一、特殊矩阵及其创建二、矩阵的特殊操作三、矩阵的特殊操作

Page 52: 第 2 章   MATLAB 数据

一、特殊矩阵及其创建

§2.6 矩阵的特殊操作

1 、空阵 格式: [ ]① 在 matlab 的工作空间中存在被赋值的空阵;② 空阵不包括任何元素,是 0×0阶矩阵;③可以在 matlab 的运算中传递。

Page 53: 第 2 章   MATLAB 数据

§2.6 矩阵的特殊操作一、特殊矩阵及其创建

2

、全0

zeros(m,n,p,…)

zeros(m,n)

zeros(n,n)

Page 54: 第 2 章   MATLAB 数据

§2.6 矩阵的特殊操作一、特殊矩阵及其创建

3 、单位矩阵

eye(m,n)eye(m,n)

Page 55: 第 2 章   MATLAB 数据

§2.6 矩阵的特殊操作一、特殊矩阵及其创建

4 、全 1 阵

ones(m,n,p…)ones(m,n,p…)

Page 56: 第 2 章   MATLAB 数据

§2.6 矩阵的特殊操作一、特殊矩阵及其创建

5 、随机阵

rand(m,n,p…)rand(m,n,p…)

Page 57: 第 2 章   MATLAB 数据

§2.6 矩阵的特殊操作二、矩阵的特殊操作1 、冒号表达式

① e1:e2:e3 ② linspace(a,b,n)

① e1:e2:e3 ② linspace(a,b,n)

例 2.25 >>t=0:1:5

Page 58: 第 2 章   MATLAB 数据

§2.6 矩阵的特殊操作二、矩阵的特殊操作2 、矩阵元素

A(m,n)=CA(m,n)=C

矩阵矩阵 行 列 数值数值

Page 59: 第 2 章   MATLAB 数据

例 2.26 >>A=[1 2 3 4 5 6];

>>A=(4,5)=100

例 2.27A(3,2)=200

A = 1 2 3 4 5 6

7 200 9

Page 60: 第 2 章   MATLAB 数据

2. 矩阵拆分 (1)利用冒号表达式获得子矩阵 ①A(:,j) 表示取 A 矩阵的第 j 列全部元素; A(i,:) 表

示 A 矩阵第 i 行的全部元素; A(i,j) 表示取 A 矩阵第i 行、第 j 列的元素。

②A(i:i+m,:) 表示取 A 矩阵第 i~ i+m 行的全部元素;A(:,k:k+m) 表示取 A 矩阵第 k~ k+m 列的全部元素,A(i:i+m,k:k+m) 表示取 A 矩阵第 i ~ i+m 行内,并在第 k~ k+m 列中的所有元素。

此外,还可利用一般向量和 end 运算符等来表示矩阵下标,从而获得子矩阵。 end 表示某一维的末尾元素下标。

Page 61: 第 2 章   MATLAB 数据

例 2.28 >>A=[1 2 3 4 5;6 7 8 9 10; 11 12 13 14 15;16 17 18 19 20];

>>A(2:3,4:5)

例 2.29 >>A= =[1 2 3 4 5;6 7 8 9 10; 11 12 13 14 15;16 17 18 19 20];

>>A(end,:); >>A([1,4],3:end)

Page 62: 第 2 章   MATLAB 数据

(2) 利用空矩阵删除矩阵的元素

x=[]x=[]

例 2.30 A=[1 2 3 4 5 67 8 9 10 11 1213 14 15 16 17 18];>>A(:,[2,4])=[]

Page 63: 第 2 章   MATLAB 数据

三、矩阵的特殊操作

§2.6 矩阵的特殊操作

1 、重新排列

c=reshape(a,m,n,p,…)c=reshape(a,m,n,p,…)

Page 64: 第 2 章   MATLAB 数据

§2.6 矩阵的特殊操作三、矩阵的特殊操作

2 、矩阵的翻转与旋转

命令 功能 命令 功能

fliplr 左右翻转 flipdim N维翻转

flipud 上下翻转 rotgo 逆时针旋转90 度