MATLABPPT02
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
5
使用形式:
① A=zeros(n) 生成n×n零矩阵。 A=zeros(m,n)或者A=zeros([m,n]) 生成m×n的 零矩阵。 A=zeros(m,n,p,…)或者A=zeros([m n p …]) 生 成m×n×p×…的零矩阵。 B=zeros(size(A)) 生成和矩阵A大小相等的全零 矩阵。
20
5. 矩阵的运算
加、减、乘、除和乘方,按照线性代数中基本的运算 法则进行。 加 A+B 减 A-B 乘 A*B (.*是矩阵对应元素之间的乘积) 除 A\B A/B 转置 A’ notes: 对于复矩阵Z,Z’表示Z的复共轭转置,对于非 共轭转置用Z.’或conj(Z’)实现。 [例2—7] z=[1+i 3-2i] , z', z.',conj(z') 链接
7
注意:在MATLAB中,不需要事先定义矩阵的维 数,MATLAB自动为矩阵分配存储空间。 但如果在程序运行过程中采用零矩阵为矩 阵生成的全部元素,或某一行、某一列的 元素预先分配内存空间,会大大加快程序 运算速度。(zeros) (3)从外部调入数据文件生成矩阵 可以是以前的MATLAB矩阵存储的二进制文件 (.mat);也可以是数值文本文件,但其中的数 据在调入前要先排成矩阵形式。 load filename.dat 或filename.txt %将数 据文件filename的数据内容调入工作空间
② A=ones (n) 生成n×n全1矩阵。 A=ones (m,n)或者A=ones ([m,n]) 生成m×n的全1矩阵。 A=ones (m,n,p,…)或者A=ones ([m n p …]) 生成m×n×p×…的全1矩阵。 B=ones (size(A)) 生成和矩阵A大小相等的全1矩阵。 ③ A=eye (n) 生成n×n单位矩阵。 A=eye (m,n)或者A=eye ([m,n]) 生成m×n的单位矩阵。 B=eye (size(A)) 生成和矩阵A大小相等的单位矩阵。 6
18
4. 矩阵变换函数
矩阵旋转函数: B=fliplr(A) B=flipud(A) B=flipdim(A,dim)
%将矩阵A左右翻转得到矩阵B %将矩阵A上下翻转得到矩阵B %将矩阵A按给定维数翻转得 到矩阵B,dim=1时,按行转翻 ;dim=0时,按列翻转。 %将矩阵A逆时针旋转90度得 到矩阵B,k为倍数,当k=1时 ,可省略。
12
2. 矩阵的保存和提取
save命令保存已经存在的矩阵。 save filename A B MATLAB用.mat文件保存二进制的数据, 系统将会 自动在文件名filename后加上后缀.mat。 load命令将保存在文件中的矩阵读到MATLAB工 作空间的内存里。 load filename
(2)修改矩阵
使用矩阵编辑器(Matrix Editor)来修改矩阵。 ①打开工作空间窗口 ②打开矩阵编辑器 选中已知变量A,双击或利用快捷菜单,启动矩阵 编辑器(Array Editor)。链接 A=[5,6,7;8,9,10;2,3,4] %创建一个矩阵变量 ③改变矩阵元素值 选中左上方文本框中的矩阵元素,输入要改变的值 即可。
6. 矩阵函数
21
(1)线性方程组 线性方程组的求解问题:给定两个矩阵A和B,求解满足方程AX=B或 XA=B的矩阵X。 正斜杠/和反斜杠\是两个不同的算符。 方程AX=B的解用X=A\B表示,称为左除; 方程XA=B的解用X=B/A表示,称为右除。 MATLAB常用的基本矩阵运算函数如下: det(A) 求方阵A的行列式值 dot(A,B) 求矩阵A和B的点积 eig(A) 求矩阵A的特征值和特征向量 norm(A,1) 求矩阵1_范数 norm(A)或norm(A,2) 求矩阵A的2_范数 norm(A,inf) 求矩阵A的无穷大_范数 norm(A,'fro') 求矩阵A的F_范数 Rank(A) 求矩阵A的秩
13
3. 矩阵的标识、修改及删除
(1)标识
子矩阵的序号向量标识方式:A(u,v), A(u) u,v可以是任意排列的向量,其中任何一个可以是 冒号,它表示全部行(在u的位置)或全部列(在v的位 置)。 单个元素:双下标: A(i,j) ;单下标来:A(i) MATLAB的运算是对列操作的,矩阵可以认为是按 列优先排列的一个长的列向量。 例:矩阵A(2,2),A(1)表示第一列的第一个元素, A(2)表示第一列的第二个元素,A(3)表示第二列的 第一个元素,A(4)表示第二列的第二个元素。
14
当矩阵的下标超出矩阵的实际元素的下标时,将给 出错误信息。 例如:A=[1 2 3 4;5 6 7 8;9 10 11 12;13 14 15 16] A(4,4), A(30) [例2—6] 用序号标识方式提取矩阵A的子矩阵。 A=magic(4) %产生4维的魔方矩阵 A1=A([1:2],[1,2,4]) %提取矩阵A的第一行 和第二行的第l,2,4列元素 A2=A([4,2],:) %提取矩阵A的第四行 和第一行的全部元素 A([1,3],[2,4])=zeros(2) %使矩阵第一行和第 三行的第2,4列元素为0 链接 15
⑤A=diag(V) 当V为n维向量时,产生一个以
向量V的元素为对角线的n维数组;当V为n 维矩阵时,产生 一个以V矩阵的主对角线元 素为元素的n 维数组。
[例2—2] 利用diag产生对角阵及对角线向量。链接 A=rand(4,4), %创建—个4阶随机矩阵 B=diag(A) C=diag(B)
1
矩阵
矩阵的创建
矩阵的保存和提取 矩阵的标识、修改及删除 矩阵变换
矩阵的运算
矩阵的运算
2
数组
数组的创建 数组的寻访和赋值 数组函数 数组的运算
3
2.1 矩阵
1. 矩阵的创建
遵循的基本规则: 整个输入矩阶必须包含在方括号[ ]中; 行与行之间必须用分号(;)或Enter键符分隔; 每行中的元素用逗号(,)或空格分隔; 矩阵中的元素可以为数字或表达式,但表达式中 不可包含未知的变量。 矩阵元素可以是复数:A 用书写复数的方法输入 复数元素。 B 一个实部矩阵+一个虚部。 当矩阵中没有任何元素时,矩阵为“空 阵”(Empty Matrix)。
4
(1)直接输入法
[例2-1] 用直接输入法创建一个4×4的A矩阵。
A=[2, 3 4 5; 3, 4 5, 6; 4, 5 6 7 7, 8, 9 10] %元素之间用逗号或空格分开, 行与行之间用分号或Enter键分隔
(2)由函数创建矩阵
zeros:生成全部元素为0的零距阵 (Zeros Array) ones:生成全部元素为1的距阵 eye:生成单位距阵 rand:生成均匀分布的随机矩阵,矩阵元素在0-1间 diag: 生成一个对角阵或由对角线元素组成的向量
再看: As=sparse(2,3,1), full(As) As=sparse(1:2,2:3,[5 2]), full(As) As=sparse(eye(10)) 链接
23
.
稀疏矩阵和满阵的存储方式 链接 B=eye(200); Bs=sparse(B); (3)矩阵的逆和伪逆 矩阵A为方阵且非奇异,方程AX=I和XA=I的解称为矩阵A的逆,表示为 A1 。 函数:inv求逆。 NOTE: X=inv(A)*B和X=A\B,应尽量使用后者。 A为长方阵时,方程AX=I和XA=I至少有一个无解。这时矩阵的伪逆(广 义逆), X=pinv(A). [例2—9] 链接 C=[8,6;2,5;1,7]; X=pinv(C)
Q=X*C P=C*X
24
(4)矩阵的Cholesky和LU、QR分解
22
(2)稀疏矩阵 稀疏矩阵:只包含少量非零元素的矩阵。 函数sparse创建稀疏矩阵:sparse(i,j,s) ,
其中,第k个非零元素是s(k),s(k)位于i(k)行j(k)列,并要求i,j,s 具有相同的长度。
[例2—8] As=sparse(1:10,1:10,ones(1,10))
稀疏矩阵的转换:A=full(As)链接 full(As)
8
来自百度文库
[例2—3] 直接读入外部数据文件生成一个矩阵 链接 load example2_3.txt 提示:需要调入的文件必须在MATLAB搜索路径范围 内,否则找不到文件。
另外,可使用File--Import Data 从外部数据文件 中直接读取数据。链接
选中文件,单击[打开]按钮,然后打开 “Import Wizard”窗口。单击“FINISH”按钮,即可 输入打开的数据文件中数据。链接
B=rot90(A,k)
19
矩阵提取函数: B=tril(A) B=tril(A,k) B=triu(A) B=triu(A,k) %取矩阵A主对角线及以下元 素得到矩阵B,其余元素取0。 %取矩阵A第k条对角线及以下 元素得到矩阵B,其余元素取0。 %取矩阵A主对角线及以上元素 得到矩阵B,其余元素取0。 %取矩阵A第k条对角线及以上元 素得到矩阵B,其余元素取0。
9
(4)特殊矩阵-向量的生成
① 直接输入 ②自动创建 利用冒号生成向量 x=i:j:k 若j>0, 且i<k或j<0且i>k, 则生成向量 x=[i,i+j,i+2j,...,k]; 若j>0, 且i>k或j<0且i<k, 则生成向量x为空向量。 若步长j 为1,可省略不写。
10
利用linspace生成向量 x=linspace(a,b,n) 在a、b之间线性生成有n个元素的行向量x,为等 差向量。 若不写n,则生成有100个元素的行向量。 利用logspace生成向量 x=logspace(a,b,n) 在a、b之间生成有n个元素的行向星x,其元素起 点x(1)10 = a ,终点x(n)10 =b ,为等比向量。 若不写n,生成有50个元素的行向量x。
第二章 矩阵与数组
MATLAB语言以矩阵为基本数据单位,包括控制流 语句、函数、数据结构、输入输出及面向对象等。
以矩阵 (matrix)及数组(array)方式做运算。 外观形式相同,中括号[ ]中键入元素。 运算性质不同,矩阵采用线性代数的运算法制, 数组强调元素对元素的运算。 向量和标量为特殊的矩阵,向量只有一行或一列, 标量只有一个元素。
16
④改变矩阵的维数 左上角的两个文本框分别表示矩阵的行和列,输入 数值改变矩阵的行和列。 ⑤确认所有元素符合要求后,关闭对话框,创建 了一个新矩阵。 ⑥在工作窗口中重新键入矩阵名,原矩阵已改。 当给矩阵赋一个新元素值时,MATLAB会自动 增加矩阵的维数大小。链接
17
(3)删除矩阵的行和列
双下标可赋值,不能删除矩阵的某个元索,但可 以删除矩阵的列或行。 例如: A=[1 2 3;4 5 6], A(1,2)=[ ] , A(:,2)=[ ] %矩 阵A不为标量,A(1,2)=[ ] 给出错误信息, A(:,2)=[ ]删除矩阵A的第二列。 单下标可赋值,也可删除矩阵的某个或某些元素, 并将剩下的元素按列编成—个长行向量。 例如: A=[1 2 3;4 5 6], A(3)=[ ], A(1:2:5)=[ ] %删除下标为l、3、5的三个元素 链接
④A=rand (n) 生成n×n随机矩阵。 A=rand (m,n)或者A=rand ([m,n]) 生成m×n的随机矩阵。 A=rand (m,n,p,…)或者A=rand ([m n p …]) 生成m×n×p×…的随机矩阵。 B=rand (size(A)) 生成和矩阵A大小相等的随机矩阵。 A=rand 不带任何参数将产生一个随机数。
11
[例2—4] 利用冒号生成向量。链接 a=1:6 b=2:2:10 c=8:-1:2 c1=8:1:4 [例2—5] 利用linspace、logspace函数生成向量。 a=linspace(1.5, 6.0, 5) %元素值在1.5和6.0之间 的5个数 b=logspace(0,2, 4) %元素值在 100 和 102 之间的4 个数链接
使用形式:
① A=zeros(n) 生成n×n零矩阵。 A=zeros(m,n)或者A=zeros([m,n]) 生成m×n的 零矩阵。 A=zeros(m,n,p,…)或者A=zeros([m n p …]) 生 成m×n×p×…的零矩阵。 B=zeros(size(A)) 生成和矩阵A大小相等的全零 矩阵。
20
5. 矩阵的运算
加、减、乘、除和乘方,按照线性代数中基本的运算 法则进行。 加 A+B 减 A-B 乘 A*B (.*是矩阵对应元素之间的乘积) 除 A\B A/B 转置 A’ notes: 对于复矩阵Z,Z’表示Z的复共轭转置,对于非 共轭转置用Z.’或conj(Z’)实现。 [例2—7] z=[1+i 3-2i] , z', z.',conj(z') 链接
7
注意:在MATLAB中,不需要事先定义矩阵的维 数,MATLAB自动为矩阵分配存储空间。 但如果在程序运行过程中采用零矩阵为矩 阵生成的全部元素,或某一行、某一列的 元素预先分配内存空间,会大大加快程序 运算速度。(zeros) (3)从外部调入数据文件生成矩阵 可以是以前的MATLAB矩阵存储的二进制文件 (.mat);也可以是数值文本文件,但其中的数 据在调入前要先排成矩阵形式。 load filename.dat 或filename.txt %将数 据文件filename的数据内容调入工作空间
② A=ones (n) 生成n×n全1矩阵。 A=ones (m,n)或者A=ones ([m,n]) 生成m×n的全1矩阵。 A=ones (m,n,p,…)或者A=ones ([m n p …]) 生成m×n×p×…的全1矩阵。 B=ones (size(A)) 生成和矩阵A大小相等的全1矩阵。 ③ A=eye (n) 生成n×n单位矩阵。 A=eye (m,n)或者A=eye ([m,n]) 生成m×n的单位矩阵。 B=eye (size(A)) 生成和矩阵A大小相等的单位矩阵。 6
18
4. 矩阵变换函数
矩阵旋转函数: B=fliplr(A) B=flipud(A) B=flipdim(A,dim)
%将矩阵A左右翻转得到矩阵B %将矩阵A上下翻转得到矩阵B %将矩阵A按给定维数翻转得 到矩阵B,dim=1时,按行转翻 ;dim=0时,按列翻转。 %将矩阵A逆时针旋转90度得 到矩阵B,k为倍数,当k=1时 ,可省略。
12
2. 矩阵的保存和提取
save命令保存已经存在的矩阵。 save filename A B MATLAB用.mat文件保存二进制的数据, 系统将会 自动在文件名filename后加上后缀.mat。 load命令将保存在文件中的矩阵读到MATLAB工 作空间的内存里。 load filename
(2)修改矩阵
使用矩阵编辑器(Matrix Editor)来修改矩阵。 ①打开工作空间窗口 ②打开矩阵编辑器 选中已知变量A,双击或利用快捷菜单,启动矩阵 编辑器(Array Editor)。链接 A=[5,6,7;8,9,10;2,3,4] %创建一个矩阵变量 ③改变矩阵元素值 选中左上方文本框中的矩阵元素,输入要改变的值 即可。
6. 矩阵函数
21
(1)线性方程组 线性方程组的求解问题:给定两个矩阵A和B,求解满足方程AX=B或 XA=B的矩阵X。 正斜杠/和反斜杠\是两个不同的算符。 方程AX=B的解用X=A\B表示,称为左除; 方程XA=B的解用X=B/A表示,称为右除。 MATLAB常用的基本矩阵运算函数如下: det(A) 求方阵A的行列式值 dot(A,B) 求矩阵A和B的点积 eig(A) 求矩阵A的特征值和特征向量 norm(A,1) 求矩阵1_范数 norm(A)或norm(A,2) 求矩阵A的2_范数 norm(A,inf) 求矩阵A的无穷大_范数 norm(A,'fro') 求矩阵A的F_范数 Rank(A) 求矩阵A的秩
13
3. 矩阵的标识、修改及删除
(1)标识
子矩阵的序号向量标识方式:A(u,v), A(u) u,v可以是任意排列的向量,其中任何一个可以是 冒号,它表示全部行(在u的位置)或全部列(在v的位 置)。 单个元素:双下标: A(i,j) ;单下标来:A(i) MATLAB的运算是对列操作的,矩阵可以认为是按 列优先排列的一个长的列向量。 例:矩阵A(2,2),A(1)表示第一列的第一个元素, A(2)表示第一列的第二个元素,A(3)表示第二列的 第一个元素,A(4)表示第二列的第二个元素。
14
当矩阵的下标超出矩阵的实际元素的下标时,将给 出错误信息。 例如:A=[1 2 3 4;5 6 7 8;9 10 11 12;13 14 15 16] A(4,4), A(30) [例2—6] 用序号标识方式提取矩阵A的子矩阵。 A=magic(4) %产生4维的魔方矩阵 A1=A([1:2],[1,2,4]) %提取矩阵A的第一行 和第二行的第l,2,4列元素 A2=A([4,2],:) %提取矩阵A的第四行 和第一行的全部元素 A([1,3],[2,4])=zeros(2) %使矩阵第一行和第 三行的第2,4列元素为0 链接 15
⑤A=diag(V) 当V为n维向量时,产生一个以
向量V的元素为对角线的n维数组;当V为n 维矩阵时,产生 一个以V矩阵的主对角线元 素为元素的n 维数组。
[例2—2] 利用diag产生对角阵及对角线向量。链接 A=rand(4,4), %创建—个4阶随机矩阵 B=diag(A) C=diag(B)
1
矩阵
矩阵的创建
矩阵的保存和提取 矩阵的标识、修改及删除 矩阵变换
矩阵的运算
矩阵的运算
2
数组
数组的创建 数组的寻访和赋值 数组函数 数组的运算
3
2.1 矩阵
1. 矩阵的创建
遵循的基本规则: 整个输入矩阶必须包含在方括号[ ]中; 行与行之间必须用分号(;)或Enter键符分隔; 每行中的元素用逗号(,)或空格分隔; 矩阵中的元素可以为数字或表达式,但表达式中 不可包含未知的变量。 矩阵元素可以是复数:A 用书写复数的方法输入 复数元素。 B 一个实部矩阵+一个虚部。 当矩阵中没有任何元素时,矩阵为“空 阵”(Empty Matrix)。
4
(1)直接输入法
[例2-1] 用直接输入法创建一个4×4的A矩阵。
A=[2, 3 4 5; 3, 4 5, 6; 4, 5 6 7 7, 8, 9 10] %元素之间用逗号或空格分开, 行与行之间用分号或Enter键分隔
(2)由函数创建矩阵
zeros:生成全部元素为0的零距阵 (Zeros Array) ones:生成全部元素为1的距阵 eye:生成单位距阵 rand:生成均匀分布的随机矩阵,矩阵元素在0-1间 diag: 生成一个对角阵或由对角线元素组成的向量
再看: As=sparse(2,3,1), full(As) As=sparse(1:2,2:3,[5 2]), full(As) As=sparse(eye(10)) 链接
23
.
稀疏矩阵和满阵的存储方式 链接 B=eye(200); Bs=sparse(B); (3)矩阵的逆和伪逆 矩阵A为方阵且非奇异,方程AX=I和XA=I的解称为矩阵A的逆,表示为 A1 。 函数:inv求逆。 NOTE: X=inv(A)*B和X=A\B,应尽量使用后者。 A为长方阵时,方程AX=I和XA=I至少有一个无解。这时矩阵的伪逆(广 义逆), X=pinv(A). [例2—9] 链接 C=[8,6;2,5;1,7]; X=pinv(C)
Q=X*C P=C*X
24
(4)矩阵的Cholesky和LU、QR分解
22
(2)稀疏矩阵 稀疏矩阵:只包含少量非零元素的矩阵。 函数sparse创建稀疏矩阵:sparse(i,j,s) ,
其中,第k个非零元素是s(k),s(k)位于i(k)行j(k)列,并要求i,j,s 具有相同的长度。
[例2—8] As=sparse(1:10,1:10,ones(1,10))
稀疏矩阵的转换:A=full(As)链接 full(As)
8
来自百度文库
[例2—3] 直接读入外部数据文件生成一个矩阵 链接 load example2_3.txt 提示:需要调入的文件必须在MATLAB搜索路径范围 内,否则找不到文件。
另外,可使用File--Import Data 从外部数据文件 中直接读取数据。链接
选中文件,单击[打开]按钮,然后打开 “Import Wizard”窗口。单击“FINISH”按钮,即可 输入打开的数据文件中数据。链接
B=rot90(A,k)
19
矩阵提取函数: B=tril(A) B=tril(A,k) B=triu(A) B=triu(A,k) %取矩阵A主对角线及以下元 素得到矩阵B,其余元素取0。 %取矩阵A第k条对角线及以下 元素得到矩阵B,其余元素取0。 %取矩阵A主对角线及以上元素 得到矩阵B,其余元素取0。 %取矩阵A第k条对角线及以上元 素得到矩阵B,其余元素取0。
9
(4)特殊矩阵-向量的生成
① 直接输入 ②自动创建 利用冒号生成向量 x=i:j:k 若j>0, 且i<k或j<0且i>k, 则生成向量 x=[i,i+j,i+2j,...,k]; 若j>0, 且i>k或j<0且i<k, 则生成向量x为空向量。 若步长j 为1,可省略不写。
10
利用linspace生成向量 x=linspace(a,b,n) 在a、b之间线性生成有n个元素的行向量x,为等 差向量。 若不写n,则生成有100个元素的行向量。 利用logspace生成向量 x=logspace(a,b,n) 在a、b之间生成有n个元素的行向星x,其元素起 点x(1)10 = a ,终点x(n)10 =b ,为等比向量。 若不写n,生成有50个元素的行向量x。
第二章 矩阵与数组
MATLAB语言以矩阵为基本数据单位,包括控制流 语句、函数、数据结构、输入输出及面向对象等。
以矩阵 (matrix)及数组(array)方式做运算。 外观形式相同,中括号[ ]中键入元素。 运算性质不同,矩阵采用线性代数的运算法制, 数组强调元素对元素的运算。 向量和标量为特殊的矩阵,向量只有一行或一列, 标量只有一个元素。
16
④改变矩阵的维数 左上角的两个文本框分别表示矩阵的行和列,输入 数值改变矩阵的行和列。 ⑤确认所有元素符合要求后,关闭对话框,创建 了一个新矩阵。 ⑥在工作窗口中重新键入矩阵名,原矩阵已改。 当给矩阵赋一个新元素值时,MATLAB会自动 增加矩阵的维数大小。链接
17
(3)删除矩阵的行和列
双下标可赋值,不能删除矩阵的某个元索,但可 以删除矩阵的列或行。 例如: A=[1 2 3;4 5 6], A(1,2)=[ ] , A(:,2)=[ ] %矩 阵A不为标量,A(1,2)=[ ] 给出错误信息, A(:,2)=[ ]删除矩阵A的第二列。 单下标可赋值,也可删除矩阵的某个或某些元素, 并将剩下的元素按列编成—个长行向量。 例如: A=[1 2 3;4 5 6], A(3)=[ ], A(1:2:5)=[ ] %删除下标为l、3、5的三个元素 链接
④A=rand (n) 生成n×n随机矩阵。 A=rand (m,n)或者A=rand ([m,n]) 生成m×n的随机矩阵。 A=rand (m,n,p,…)或者A=rand ([m n p …]) 生成m×n×p×…的随机矩阵。 B=rand (size(A)) 生成和矩阵A大小相等的随机矩阵。 A=rand 不带任何参数将产生一个随机数。
11
[例2—4] 利用冒号生成向量。链接 a=1:6 b=2:2:10 c=8:-1:2 c1=8:1:4 [例2—5] 利用linspace、logspace函数生成向量。 a=linspace(1.5, 6.0, 5) %元素值在1.5和6.0之间 的5个数 b=logspace(0,2, 4) %元素值在 100 和 102 之间的4 个数链接