当前位置:首页 > 问问

matlab *和.*有什么区别 Matlab中乘号和点乘号的区别

1、*和.*的基本概念

在Matlab中,*代表的是矩阵乘法,即两个矩阵相乘时,对应位置上的元素分别相乘,然后将相乘的结果累加得到新的矩阵元素。例如:

A=[1 2;3 4];

B=[5 6;7 8];

C=A*B;

上面的代码运行后,C的结果为:

19 22

43 50

而.*代表的是矩阵点乘,即两个矩阵对应的位置上的元素相乘得到新的矩阵。

D=[1 2;3 4];

E=[5 6;7 8];

F=D.*E;

上面的代码运行后,F的结果为:

5 12

21 32

2、 *和.*在矩阵运算中的区别

矩阵乘法中,两个矩阵的行列数必须满足乘法规则,否则会导致矩阵维数不匹配的错误。同时,在矩阵乘法中,元素相乘之后需要相加,计算量大,速度慢。例如,下面的代码运行会报错:

G=[1 2];

H=[5 6;7 8];

I=G*H;

在矩阵点乘中,两个矩阵的维数可以不相同,只要对应位置的元素相乘即可。另外,在矩阵点乘中,元素相乘不需要相加,计算速度快。例如,下面的代码不会报错:

J=[1 2];

K=[5 6;7 8];

L=J.*K;

3、*和.*在向量运算中的区别

在向量运算中,采用*进行乘法运算的话,得到的结果是一个数,这个数是两个向量内积的结果。因此,两个向量的长度必须相等,否则会导致矩阵维数不匹配的错误。如下面的代码运行结果是9:

M=[1 2 3];

N=[2 3 1];

O=M*N';

而用.*进行乘法运算,得到的结果是一个向量,向量中的元素是对应位置上两个向量间的元素相乘得到的结果。因此,两个向量的长度必须相等,否则会导致矩阵维数不匹配的错误。如下面的代码运行结果是[2 6 3]:

P=[1 2 3];

Q=[2 3 1];

R=P.*Q;

4、*和.*在矩阵和向量共同运算中的区别

在矩阵和向量共同运算中,一般采用点乘的方式进行计算。例如,下面的代码实现了向量和矩阵的点乘操作:

S=[1 2];

T=[5 6;7 8];

U=S*T;

上面的代码会得到结果[19 22],这个结果是由向量S和矩阵T的每一列向量做点乘得到。而若使用*运算符,则会得到错误结果:

S=[1 2];

T=[5 6;7 8];

U=S*T';

上面的代码会得到矩阵维度错误的提示。

声明:此文信息来源于网络,登载此文只为提供信息参考,并不用于任何商业目的。如有侵权,请及时联系我们:fendou3451@163.com
标签:

  • 关注微信

相关文章