矩陣和數字相乘
就是矩陣里面每個元素跟這個數字乘一遍,無論是點乘還是叉乘,對于這個都一樣。
>> A=ones(3)
A =1 1 11 1 11 1 1
>> 10*A
ans =10 10 1010 10 1010 10 10
矩陣和矩陣叉乘
能不能相乘,需要前面矩陣的列數等于后面矩陣的行數,出來的矩陣大小是前面矩陣的行數*后面矩陣的列數。
所以大家會發現,矩陣相乘如果前后調轉了,結果會完全不一樣,陰差陽錯地乘出個逆矩陣出來。
有個很形象的圖
有些教材會把這個稱為左乘和右乘,但是本質上其實就是矩陣相乘的先后順序。
>> A=[1 2 3; 4 5 6;7 8 9]
A =1 2 34 5 67 8 9
>> B=[10 20 30;40 50 60;70 80 90]
B =10 20 3040 50 6070 80 90
>> A*B
ans =300 360 420660 810 9601020 1260 1500
矩陣和矩陣點乘
點乘運算指將兩矩陣中相同位置的元素進行相乘運算,所以需要矩陣維數和行列數都一樣
>> A=[1 2 3; 4 5 6;7 8 9]
A =1 2 34 5 67 8 9
>> B=[10 20 30;40 50 60;70 80 90]
B =10 20 3040 50 6070 80 90
>> A.*B
ans =10 40 90160 250 360490 640 810
矩陣和數字相除
只有矩陣除以數字,沒有數字除以矩陣。跟相乘一樣,每個元素除以數字即可。
C =10 40 90160 250 360490 640 810
>> C/10
ans =1 4 916 25 3649 64 81
>> C./10
ans =1 4 916 25 3649 64 81
矩陣和矩陣除法
一般老師不讓學生學除法具體怎么算,太反人類了,大家只需要記得A/B=A*inv(B)就行。當然啦,既然換成了乘法,也要注意取逆之后的兩個矩陣的行列數能不能乘起來。
所謂左除右除,就是被除數和除數位置調轉而已。
>> A=[1,3,5;3,4,5;2,4,8]
A =1 3 53 4 52 4 8
>> B=[2,5,8;3,7,2;5,3,2]
B =2 5 83 7 25 3 2
>> A/B
ans =0.6395 -0.0058 -0.05230.5233 0.0407 0.36631.0233 -0.2093 0.1163
>> A*inv(B)
ans =0.6395 -0.0058 -0.05230.5233 0.0407 0.36631.0233 -0.2093 0.1163
矩陣和矩陣點除
也就是元素一一對應相除
>> A=[1,3,5;3,4,5;2,4,8]
A =1 3 53 4 52 4 8
>> B=[2,5,8;3,7,2;5,3,2]
B =2 5 83 7 25 3 2
>> A./B
ans =0.5000 0.6000 0.62501.0000 0.5714 2.50000.4000 1.3333 4.0000
dot點乘/內積/點積/數量積
dot(A,B,X)入參X 為1表示按列,為2表示按行,默認按列。算法如下
A=[a1 a2 a3;a4 a5 a6]
B=[b1 b2 b3;b4 b5 b6]
C=[c1 c2 c3]
D=[d1 d2 d3]dot(A,B)=dot(A,B,1)%按列(每列合在一起變成一行)
=[a1*b1+a4*b4,a2*b2+a5*b5,a3*b3+a6*b6]dot(A,B,2)%按行(每行合在一起變成一列)
=[a1*b1+a2*b2+a3*b3;a4*b4+a5*b5+a6*b6]dot(C,D)=dot(D,C)=dot(inv(C),D)%如果是向量,無論方向,合起來變成一個標量
=c1*d1 + c2*d2 + c3*d3
例子如下
%矩陣
>> A=[1 2 3; 4 5 6;7 8 9]
A =1 2 34 5 67 8 9
>> B=[10 20 30;40 50 60;70 80 90]
B =10 20 3040 50 6070 80 90
>> dot(A,B,1)
ans =660 930 1260
>> dot(A,B,2)
ans =1407701940%向量
>> A=[2 4 6 8]
A =2 4 6 8
>> B=[3 4 5 6]
B =3 4 5 6
>> dot(A,B)
ans =100
cross叉積/向量積/矢量積
這個就比較復雜了,要求也多:
1、相乘的兩個對象行列相同
2、至少有一個維度的長度是3,也就是要么3行要么3列
算法如下
A=[a1 a2 a3;a4 a5 a6]B=[b1 b2 b3;b4 b5 b6]cross(A,B)=
[(a2*b3 - a3*b3),(a3*b1 - a1*b3),(a1*b2 - a2*b1);(a5*b6 - a6*b5),(a6*b4 - a4*b6),(a4*b5 - a5*b4)]
舉個例子
>> A=[1 2 3]
A =1 2 3
>> B=[4 5 6]
B =4 5 6
>> cross(A,B)
ans =-3 6 -3
>> C=[1 2 3;4 5 6]
C =1 2 34 5 6
>> D=[30 20 10;60 50 40]
D =30 20 1060 50 40
>> cross(C,D)
ans =-40 80 -40-100 200 -100