区别:
a.*b前面是点乘,要求两个变量的元素个数相等,排列方式相同,如都是行矢量或都是列矢量或都矩阵。a*b后者是矩阵乘法,要求内维相同。
用实例来说明matlab中这两种乘法C=A.B,C=AB的区别
1、A矩阵
2、B矩阵
3、C=A.*B
4、C=A*B
提供了两种运算规则:
1)A.B
进行此运算时必须保证矩阵A和B的形状一样,即同为mn矩阵。运算结果为对应位置的元素相乘组成同样形状(mn)的矩阵,即C=AijBij;
2)AB
此运算与线性代数里的矩阵相乘计算方法一样,不需要A、B形状一样,但要满足A的列数与B的行数一样(如:A为mn矩阵,B为n*p矩阵)。
一、名称不同:
1、a.*b为“点乘”。
2、a*b为“位乘“。
二、用法不同:
1、a.*b是两个矩阵对应元素相乘。
2、a*b就是线性代数里面的矩阵相乘。
三、要求不同:
1、a.*b要求两个变量的元素个数相等,排列方式相同。
2、a*b要求内维相同。
参考资料:
百度百科-MATLAB
a.*b是将a矩阵与b矩阵中相同位置的元素相乘,两个矩阵的大小必须相等
a*b就是矩阵运算中的矩阵相乘
如果a和b都是一个数,运算结果相同
前面是点乘,要求两个变量的元素个数相等,排列方式相同,如都是行矢量或都是列矢量或都矩阵。后者是矩阵乘法,要求内维相同,如a是?*2个元素,b则是2*?个元素,如不是这样,就出错。如:a=1:5;b=6:10;c=a.*b,d=a*b'
结果是:
c =
6 14 24 36 50
d =
130
a*b就是线性代数中的矩阵相乘,a的列数必须等于b的行数。
而a.*b是对应元素相乘,两个矩阵大小不一定相等。比如a是1*2的向量,b是2*4的矩阵,乘出来结果是一个2*4的矩阵。
刚刚dubug卡在这。。。才发现MATLAB里.*和*不一样。。。