第三讲矩阵的基本运算
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
第三讲内容介绍
目标:进一步了解MATLAB, 能够熟练掌握矩阵的各种基本运 算法则。
3.1 MATLAB矩阵的代数运算
3.1.1 加法和减法运算 C=A+B或 C=plus(A,B) C=A-B或C=minus(A,B)
注意:加减运算要求A、B同构,即大小一样 特别地,标量可以和任意大小的矩阵进行加减 例题3.1.1显然略讲 3.1.2 乘法运算 普通矩阵乘法:C=A*B或C=mtimes(A,B) 矩阵的数值乘法:C=A.*B或C=times(A,B) 数值乘法也叫点乘,要求A、B同构。 标量可以和任意大小的矩阵相乘(此时,普乘和点乘结果一样)。
返回“1”;
(5)isnan(A):返回与A大小一样的数组,只在非数值量nan
处返回“1”;
(6)isstruct(A):若A是结构体,则返回“1”; (7)isfield(A):若A是某结构体的域,则返回“1”; (8) ishandle(A):若A是图形句柄,则返回“1”; (9)ishold(A):若当前绘图状态保持为on,则返回“1”;
见例题3.1.2
➢ 3.1.3 矩阵的除法 ➢ 1. 方阵的求逆: B=inv(A) ➢ 2. 除法运算(分左除和右除) ➢ 1)普通除法 ➢ 左除:C=A\B或C=mldivide(A,B) ➢ 右除: C=A/B或C=mrdivide(A,B) ➢ 一般地,左除不等于右除;显然,若A可逆,则C=A\B=inv(A)*B;若B可
• C=setxor(A,B,’rows’) %返回矩阵A,B交集的非, A,B有相同列数。
• [x,ia,ib]=setxor(….) %ia,ib表示其中元素分别在a (或A),b(或B)中的位置。
• 【例】
• >> A=[1,2,3,4];
• >> B=[2,4,5,8];
• >> C=setxor(A,B)
1 6 20 ia =
134 ib =
3.4.2 两个集合的并集 格式:c=union(a,b) %返回a,b的并集,即c=aU b
C=union(A,B,’rows’) %返回矩阵A,B不同行向量构成的大矩阵, 其中相同行向量只取其一。 [c,ia,ib]=union(…) % ia,ib分别表示c中行向量在原矩阵(向量)中的位置。 >> A=[1,2,3,4]; >> B=[2,4,5,8]; >> C=union(A,B) 则结果为:
• 还可用另一种算法:sum(A.*B).
向量的叉积
两向量叉积是一个过相交向量的交点且垂直两向量的平
面的向量,在MATLAB中,
用函数cross实现。
(10)isglobal(A):若A是全局变量,则返回“1”; (11)isletter(A):若A是字母,则返回“1”; (12)isspace(A):若A是空格,则返回“1”; 3.4 集合的运算 对向量或矩阵进行集合交、并、差、异或等运算。
3.4.1 两个集合的交集 格式:c=intersect(a,b) % 返回向量a,b的公共部分,即c=a∩b
3.3 MATLAB矩阵的逻辑运算:
•3.3.1 运 算 符 有 四 种 : & ( 与 ) 、 | ( 或 ) 、 ~ (非)、xor(异或)。 •逻辑运算的结果是由0或1组成的矩阵;逻辑运算 符按元素进行比较,运算对象可以都是矩阵(此时 大小一样),也可以是其它情况。 •1.与:C=(A&B) or C=A&B or C=and(A,B) •2.或: C=(A|B) or C=A|B or C=or(A,B) •3.非: C=(~A) or C=~A or C=not(A) •4.异或:当参加运算的两个元素有一个为“0”,另 一个是非零时,结果为“1”,其它结果均为“0”。
“0”。 • (2)any(A):若某列有非零数,则函数值为“1”,否则为“0”。结果是一
行向量。
• (3)any(A,dim):在dim维上进行any(A)计算。 • 3.3.3 测试函数的介绍
主要用于测试特殊值的存在或某些条件,返回的是逻辑
值”0”或“1”。
(1)isempty(A) :若A为空,则返回“1”; (2)ischar(S):若S是字符串,则返回“1”; (3)isreal(A):若A为实数数组,则返回“1”; (4)isinf(A):返回与A大小一样的数组,只在无穷大量inf处
元素的值。
• 3.3.2 逻辑运算函数(以此方便查找矩阵中满足条件的部分或所有元素) • 1.all函数 • (1)all(x):x为向量,若向量中所有元素均非零,则函数值为“1”,否则
为“0”。 • (2)all(A):若某列所有元素均非零,则函数值为“1”,否则为“0”。 • (3)all(A,dim):A是多维数组,在dim维上进行all(A)计算。 • 2. any函数 • (1)any(x):x为向量,若向量中有非零数,则函数值为“1”,否则为
• mean(A) — A中各列向量的均值 • var(A) — A中各列向量的方差 • std(A) — A中各列向量的标准差 • cov(A) — A中各列向量的协方差矩阵 • corrcoef(A) — A中各列向量的相关矩阵 • 其它的函数如prod(求积)、max、sum、min等
均按列进行运算。
• 格式:C=dot(A,B) %A,B为向量且长 度相等,则返回向量A与B的点积。若为 矩阵,则它们必须有相Leabharlann Baidu的维数。
• C=dot(A,B,dim) %在dim维数中给出A与 B的点积。
• 【例】
• >>A=[1,2,3]; B=[3,4,5];
• >>dot(A,B);
%计算向量A,B的
点积,结果为26
C= 123458
>> A=[1,2,3,4;1,2,4,6]; >> B=[1,2,3,8;1,1,4,6]; >> [C,IA,IB]=union(A,B,'rows')
C= 1146 1234 1238 1246
IA = 1
• 3.4.3两个集合的差集
• 格式:c=setdiff(a,b) 的集合,即c=a-b.
• C=
•
79
【例】 >> A=[1,2,3,4;1,2,4,6;6,7,1,4]; >> B=[1,2,3,8;1,1,4,6;6,7,1,4];
>> C=setdiff(A,B,'rows') C=
1234 1246
3.4.4 异或集
• 格式:c=setxor(a,b)
%返回集合a,b交集的非。
a=A*B,b=inv(B),c=B-A’,d=det(A)
a = 9 7 8 b = -1/4 1/4 -3/4 c = 0 -2 -6
21 19 20 3/4 -1/4 -1/4 -1 -4 -6
15 22 23 -1/4 3/4 -1/4 -1 -5 1 det(A)=27
2. 数据分析函数 设A为m n矩阵, 则有:
•C=xor(A,B)
5.快速运算符
• (1)快速逻辑与运算:C=(A&&B) or C=A&&B • 若A的元素为0,则C的相应元素直接为0;若A的元素为1,再去计算B的
元素的值。
• (2)快速逻辑或运算: C=(A||B) or C=A||B • 若A的元素为1,则C的相应元素直接为1;若A的元素为0,再去计算B的
逆,则C=A/B=A*inv(B); ➢ 显然,(1)对于线性方程组AX=B,若A为可逆,则X=A\B=inv(A)*B; ➢ (2)对于线性方程组XA=B,若A为可逆,则X=B/A=B*inv(A);
2) 数值除法
数值左除:C=A.\B或ldivide(A,B)
数值右除:C=A./B或rdivide(A,B)
• C=
• 1358
【例】 >> A=[1,2,3,4;1,2,4,6;6,7,1,4]; >> B=[1,2,3,8;1,1,4,6;6,7,1,4]; >> [C,IA,IB]=setxor(A,B,'rows')
C= 1146 1234 1238 1246
IA = 1 2
IB= 2 1
• 向量的点积
: 3.2.3 大于 C=(A>B) or C=A>B or C=gt(A,B)
: 3.2.4 大于等于 C=(A>=B) or C=A>=B or C=ge(A,B)
3.2.5 相等: C=(A==B) or C=A==B or C=eq(A,B)
: 3.2.6 不等 C=(A~=B) or C=A~=B or C=ne(A,B)
V,则A^B=V*(D.^B)/V,其中D为对角阵,D.^B为数值的乘 方。 ➢ 对于数值乘方而言:A和B大小相等,针对元素来运算。
➢ 3.1.5 矩阵的转置和共轭转置 ➢ 复矩阵的共轭转置:B=A’ or B=ctranspose(A); ➢ 复矩阵的转置:B=A.’ or B=transpose(A) ➢ 注意:共轭转置是指先每个元素求共轭,再把矩
➢ 3.1.4 矩阵的乘方运算 ➢ 分为普通乘方和数值乘方两种,分别为:
➢ C=A^B or C=mpower(A,B)
➢ C=A.^B or C=power(A,B) ➢ 注意:普通乘方要求A是方阵,B是标量:若B是正整数,
显然;若B是负整数,则A^B=(inv(A))^abs(B); ➢ 若B不是整数,并且A的特征值矩阵为D,特征向量矩阵为
征向量阵,列为特征向量。
• 对称正定阵的cholesky分解 • R=chol(A) A对称正定,R为上三角阵,R’*R=A
• 方阵的QR分解 • [Q,R]=qr(A) Q为正交矩阵,R为上三角阵,Q*R=A • 可逆阵的 LU分解 • [L,U]=lu(A) L是下三角阵,U是上三角阵 • 这些对解线性方程组还是很有利的。
要求A和B同构,是对应元素相除。
显然A./B=B.\A;若B可逆,则A/B和B\A不一定 相等。
注意:对于A\B or B/A;A.\B or B./A,A可以是 标量;而对于A\B or B/A,若A是矩阵,B是标 量,则出错!对于A.\B or B./A,可以B是标量 ,A是矩阵。
• 矩阵特征值和特征向量 • E=eig(A) 求特征值 • [V,D]=eig(A) D是特征值构成的对角阵;V是特
阵转置;转置运算是点运算。 ➢ 3.1.6 矩阵的函数运算 ➢ 1. 常用函数见P59函数表,是对每个元素求函数
值 ➢ 记住一些常用函数格式!!!
1 2 3
1 2 1
例. 已知 A 4 5 6 B 1 1 2
7 8 0
2 1 1
求:AB,B-1,B-AT,|A|
解:A=[1,2,3;4,5,6;7,8,0];B=[1,2,1;1,1,2;2,1,1];
C=intersect(A,B,’rows’) % A,B为相同列数的矩阵,返回元素 相同的行。
[c,ia,ib]= intersect(a,b) % c为的a,b公共元素,ia表示公共元素 在a中的位置,ib表示公共元素在b中的位置。【例】
I
>> A=[1,2,3,4;1,2,4,6;6,7,1,4]; >> B=[1,2,3,8;1,1,4,6;6,7,1,4]; >> C=intersect(A,B,'rows') C= 6714 >> a=[1,9,6,20];b=[1,2,3,4,6,10,20]; >> [c,ia,ib]=intersect(a,b) c=
3.2 矩阵的关系运算
所有关系表达式,matlab把“真”值输出为“1”; 把“假”值输出为“0”。 关系运算符有:<、<=、>、>=、==、~= 注意:在关系运算中A、B结构相同,当然可以其中 一个为标量。 3.2.1 小于:C=(A<B) or C=A<B or C=lt(A,B) 3.2.2 小于等于:C=(A<=B) or C=A<=B or C=le(A,B)
%返回属于a但不属于b的不同元素
• C=setdiff(A,B,’rows’) %返回属于A但不属于B的不同行。
• [C,I]=setdiff(….) 中的位置。
%C与前面一致,I表示C中元素在A
• 【例】
• >> A=[1,7,9,6,20];B=[1,2,3,4,6,10,20];
• >> C=setdiff(A,B)
目标:进一步了解MATLAB, 能够熟练掌握矩阵的各种基本运 算法则。
3.1 MATLAB矩阵的代数运算
3.1.1 加法和减法运算 C=A+B或 C=plus(A,B) C=A-B或C=minus(A,B)
注意:加减运算要求A、B同构,即大小一样 特别地,标量可以和任意大小的矩阵进行加减 例题3.1.1显然略讲 3.1.2 乘法运算 普通矩阵乘法:C=A*B或C=mtimes(A,B) 矩阵的数值乘法:C=A.*B或C=times(A,B) 数值乘法也叫点乘,要求A、B同构。 标量可以和任意大小的矩阵相乘(此时,普乘和点乘结果一样)。
返回“1”;
(5)isnan(A):返回与A大小一样的数组,只在非数值量nan
处返回“1”;
(6)isstruct(A):若A是结构体,则返回“1”; (7)isfield(A):若A是某结构体的域,则返回“1”; (8) ishandle(A):若A是图形句柄,则返回“1”; (9)ishold(A):若当前绘图状态保持为on,则返回“1”;
见例题3.1.2
➢ 3.1.3 矩阵的除法 ➢ 1. 方阵的求逆: B=inv(A) ➢ 2. 除法运算(分左除和右除) ➢ 1)普通除法 ➢ 左除:C=A\B或C=mldivide(A,B) ➢ 右除: C=A/B或C=mrdivide(A,B) ➢ 一般地,左除不等于右除;显然,若A可逆,则C=A\B=inv(A)*B;若B可
• C=setxor(A,B,’rows’) %返回矩阵A,B交集的非, A,B有相同列数。
• [x,ia,ib]=setxor(….) %ia,ib表示其中元素分别在a (或A),b(或B)中的位置。
• 【例】
• >> A=[1,2,3,4];
• >> B=[2,4,5,8];
• >> C=setxor(A,B)
1 6 20 ia =
134 ib =
3.4.2 两个集合的并集 格式:c=union(a,b) %返回a,b的并集,即c=aU b
C=union(A,B,’rows’) %返回矩阵A,B不同行向量构成的大矩阵, 其中相同行向量只取其一。 [c,ia,ib]=union(…) % ia,ib分别表示c中行向量在原矩阵(向量)中的位置。 >> A=[1,2,3,4]; >> B=[2,4,5,8]; >> C=union(A,B) 则结果为:
• 还可用另一种算法:sum(A.*B).
向量的叉积
两向量叉积是一个过相交向量的交点且垂直两向量的平
面的向量,在MATLAB中,
用函数cross实现。
(10)isglobal(A):若A是全局变量,则返回“1”; (11)isletter(A):若A是字母,则返回“1”; (12)isspace(A):若A是空格,则返回“1”; 3.4 集合的运算 对向量或矩阵进行集合交、并、差、异或等运算。
3.4.1 两个集合的交集 格式:c=intersect(a,b) % 返回向量a,b的公共部分,即c=a∩b
3.3 MATLAB矩阵的逻辑运算:
•3.3.1 运 算 符 有 四 种 : & ( 与 ) 、 | ( 或 ) 、 ~ (非)、xor(异或)。 •逻辑运算的结果是由0或1组成的矩阵;逻辑运算 符按元素进行比较,运算对象可以都是矩阵(此时 大小一样),也可以是其它情况。 •1.与:C=(A&B) or C=A&B or C=and(A,B) •2.或: C=(A|B) or C=A|B or C=or(A,B) •3.非: C=(~A) or C=~A or C=not(A) •4.异或:当参加运算的两个元素有一个为“0”,另 一个是非零时,结果为“1”,其它结果均为“0”。
“0”。 • (2)any(A):若某列有非零数,则函数值为“1”,否则为“0”。结果是一
行向量。
• (3)any(A,dim):在dim维上进行any(A)计算。 • 3.3.3 测试函数的介绍
主要用于测试特殊值的存在或某些条件,返回的是逻辑
值”0”或“1”。
(1)isempty(A) :若A为空,则返回“1”; (2)ischar(S):若S是字符串,则返回“1”; (3)isreal(A):若A为实数数组,则返回“1”; (4)isinf(A):返回与A大小一样的数组,只在无穷大量inf处
元素的值。
• 3.3.2 逻辑运算函数(以此方便查找矩阵中满足条件的部分或所有元素) • 1.all函数 • (1)all(x):x为向量,若向量中所有元素均非零,则函数值为“1”,否则
为“0”。 • (2)all(A):若某列所有元素均非零,则函数值为“1”,否则为“0”。 • (3)all(A,dim):A是多维数组,在dim维上进行all(A)计算。 • 2. any函数 • (1)any(x):x为向量,若向量中有非零数,则函数值为“1”,否则为
• mean(A) — A中各列向量的均值 • var(A) — A中各列向量的方差 • std(A) — A中各列向量的标准差 • cov(A) — A中各列向量的协方差矩阵 • corrcoef(A) — A中各列向量的相关矩阵 • 其它的函数如prod(求积)、max、sum、min等
均按列进行运算。
• 格式:C=dot(A,B) %A,B为向量且长 度相等,则返回向量A与B的点积。若为 矩阵,则它们必须有相Leabharlann Baidu的维数。
• C=dot(A,B,dim) %在dim维数中给出A与 B的点积。
• 【例】
• >>A=[1,2,3]; B=[3,4,5];
• >>dot(A,B);
%计算向量A,B的
点积,结果为26
C= 123458
>> A=[1,2,3,4;1,2,4,6]; >> B=[1,2,3,8;1,1,4,6]; >> [C,IA,IB]=union(A,B,'rows')
C= 1146 1234 1238 1246
IA = 1
• 3.4.3两个集合的差集
• 格式:c=setdiff(a,b) 的集合,即c=a-b.
• C=
•
79
【例】 >> A=[1,2,3,4;1,2,4,6;6,7,1,4]; >> B=[1,2,3,8;1,1,4,6;6,7,1,4];
>> C=setdiff(A,B,'rows') C=
1234 1246
3.4.4 异或集
• 格式:c=setxor(a,b)
%返回集合a,b交集的非。
a=A*B,b=inv(B),c=B-A’,d=det(A)
a = 9 7 8 b = -1/4 1/4 -3/4 c = 0 -2 -6
21 19 20 3/4 -1/4 -1/4 -1 -4 -6
15 22 23 -1/4 3/4 -1/4 -1 -5 1 det(A)=27
2. 数据分析函数 设A为m n矩阵, 则有:
•C=xor(A,B)
5.快速运算符
• (1)快速逻辑与运算:C=(A&&B) or C=A&&B • 若A的元素为0,则C的相应元素直接为0;若A的元素为1,再去计算B的
元素的值。
• (2)快速逻辑或运算: C=(A||B) or C=A||B • 若A的元素为1,则C的相应元素直接为1;若A的元素为0,再去计算B的
逆,则C=A/B=A*inv(B); ➢ 显然,(1)对于线性方程组AX=B,若A为可逆,则X=A\B=inv(A)*B; ➢ (2)对于线性方程组XA=B,若A为可逆,则X=B/A=B*inv(A);
2) 数值除法
数值左除:C=A.\B或ldivide(A,B)
数值右除:C=A./B或rdivide(A,B)
• C=
• 1358
【例】 >> A=[1,2,3,4;1,2,4,6;6,7,1,4]; >> B=[1,2,3,8;1,1,4,6;6,7,1,4]; >> [C,IA,IB]=setxor(A,B,'rows')
C= 1146 1234 1238 1246
IA = 1 2
IB= 2 1
• 向量的点积
: 3.2.3 大于 C=(A>B) or C=A>B or C=gt(A,B)
: 3.2.4 大于等于 C=(A>=B) or C=A>=B or C=ge(A,B)
3.2.5 相等: C=(A==B) or C=A==B or C=eq(A,B)
: 3.2.6 不等 C=(A~=B) or C=A~=B or C=ne(A,B)
V,则A^B=V*(D.^B)/V,其中D为对角阵,D.^B为数值的乘 方。 ➢ 对于数值乘方而言:A和B大小相等,针对元素来运算。
➢ 3.1.5 矩阵的转置和共轭转置 ➢ 复矩阵的共轭转置:B=A’ or B=ctranspose(A); ➢ 复矩阵的转置:B=A.’ or B=transpose(A) ➢ 注意:共轭转置是指先每个元素求共轭,再把矩
➢ 3.1.4 矩阵的乘方运算 ➢ 分为普通乘方和数值乘方两种,分别为:
➢ C=A^B or C=mpower(A,B)
➢ C=A.^B or C=power(A,B) ➢ 注意:普通乘方要求A是方阵,B是标量:若B是正整数,
显然;若B是负整数,则A^B=(inv(A))^abs(B); ➢ 若B不是整数,并且A的特征值矩阵为D,特征向量矩阵为
征向量阵,列为特征向量。
• 对称正定阵的cholesky分解 • R=chol(A) A对称正定,R为上三角阵,R’*R=A
• 方阵的QR分解 • [Q,R]=qr(A) Q为正交矩阵,R为上三角阵,Q*R=A • 可逆阵的 LU分解 • [L,U]=lu(A) L是下三角阵,U是上三角阵 • 这些对解线性方程组还是很有利的。
要求A和B同构,是对应元素相除。
显然A./B=B.\A;若B可逆,则A/B和B\A不一定 相等。
注意:对于A\B or B/A;A.\B or B./A,A可以是 标量;而对于A\B or B/A,若A是矩阵,B是标 量,则出错!对于A.\B or B./A,可以B是标量 ,A是矩阵。
• 矩阵特征值和特征向量 • E=eig(A) 求特征值 • [V,D]=eig(A) D是特征值构成的对角阵;V是特
阵转置;转置运算是点运算。 ➢ 3.1.6 矩阵的函数运算 ➢ 1. 常用函数见P59函数表,是对每个元素求函数
值 ➢ 记住一些常用函数格式!!!
1 2 3
1 2 1
例. 已知 A 4 5 6 B 1 1 2
7 8 0
2 1 1
求:AB,B-1,B-AT,|A|
解:A=[1,2,3;4,5,6;7,8,0];B=[1,2,1;1,1,2;2,1,1];
C=intersect(A,B,’rows’) % A,B为相同列数的矩阵,返回元素 相同的行。
[c,ia,ib]= intersect(a,b) % c为的a,b公共元素,ia表示公共元素 在a中的位置,ib表示公共元素在b中的位置。【例】
I
>> A=[1,2,3,4;1,2,4,6;6,7,1,4]; >> B=[1,2,3,8;1,1,4,6;6,7,1,4]; >> C=intersect(A,B,'rows') C= 6714 >> a=[1,9,6,20];b=[1,2,3,4,6,10,20]; >> [c,ia,ib]=intersect(a,b) c=
3.2 矩阵的关系运算
所有关系表达式,matlab把“真”值输出为“1”; 把“假”值输出为“0”。 关系运算符有:<、<=、>、>=、==、~= 注意:在关系运算中A、B结构相同,当然可以其中 一个为标量。 3.2.1 小于:C=(A<B) or C=A<B or C=lt(A,B) 3.2.2 小于等于:C=(A<=B) or C=A<=B or C=le(A,B)
%返回属于a但不属于b的不同元素
• C=setdiff(A,B,’rows’) %返回属于A但不属于B的不同行。
• [C,I]=setdiff(….) 中的位置。
%C与前面一致,I表示C中元素在A
• 【例】
• >> A=[1,7,9,6,20];B=[1,2,3,4,6,10,20];
• >> C=setdiff(A,B)