matlab 中.*和*的区别?
“.*”和“*”的区别:
在进行数之间的运算时“.*”和“*”是没有区别的,都是表示普通的乘法运算。例:m = 2,n = 3,m.*n = 6, m*n = 6。
在进行矩阵之间的运算时“.*”和“*”的意义就有所不同了。假设a,b表示两个矩阵,a*b表示矩阵a与矩阵b进行矩阵相乘,a.*b表示矩阵a中的元素与矩阵b中的元素按位置依次相乘,得到的结果将作为新矩阵中相同位置的元素。
MATLAB 中用一个特殊的符号来区分矩阵运算和数组运算。在需要区分两者不同的时侯,把点置于符号前来指示这是一个数组运算(例如, .*)。线面给出的是一些常见的数组和矩阵运算。
数组加法:A+B,数组加法和矩阵加法相同。
数组减法:A-B ,数组减法和矩阵减法相同。
数组乘法:A.*B,A 和 B 的元素逐个对应相乘,两数组之间必须有相同的形,或其中一个是标量。
矩阵乘法:A*B,A 和 B 的矩阵乘法,A 的列数必须和 B 的行数相同。
数组右除法:A./B,A 和 B 的元素逐个对应相除:A(i,j)/B(i,j)两数组之间必须有相同的形,或其中一个是标量。
数组左除法:A.\B,A 和 B 的元素逐个对应相除:B(i,j)/A(i,j)两数组之间必须有相同的形,或其中一个是标量。
矩阵右除法:A/B 矩阵除法,等价于 A*inv(B), inv(B)是 B 的逆阵。
矩阵左除法:A\B 矩阵除法,等价于 inv(B)*A, inv(A)是 A 的逆阵。
数组指数运算:A.^B,AB中的元素逐个进行如下运算:A(i,j)^B(i,j),A(i,j)/B(i,j)两数组之间必须有相同的形,或其中一个是标量。
初学者往往混淆数组运算和矩阵运算。在一些情况下,两者相互替换会导致非法操作,MATLAB 将会报告产生了错误。在另一些情况下,两种运算都是合法的,那么这时 MATLAB进行错误的运算,并产生错误的结果。
当我们进行方阵运算时,极易产生这样的错误。两个方阵具有相同的大小, 两者之间的数组运算和矩阵运算都是合法的, 但产生的结果完全不同。在这种情况下,你要万分的小心。
A=[1 2;3 4]; B=[5 6;7 8];
A.*B=[1*5 2*6;3*7 4*8]; %矩阵A和B对应位置的元素相乘,A和 B也可以为列或者行向量
A*B=[1*5+2*7 1*6+2*8; 3*5+4*7 3*6+4*8] %为矩阵乘法或者数乘,若为矩阵乘法,A和B必须符合矩阵乘法的原则,即A的行数和B的列数相等