matlab中两个3 x 11矩阵的点积给出1x11矩阵

时间:2014-01-29 14:35:04

标签: matlab matrix

我在MATLAB中做两个3x11矩阵的点积,这些矩阵是多维的,但我一次只访问一个'页'。根据我的数学知识,我希望返回3x11矩阵作为结果,但使用以下代码时:

   contact_force(:,:,k)=dot(km(:,:,k),actual_interf(:,:,k))  

答案是1x11矩阵的形式

4 个答案:

答案 0 :(得分:1)

对于N-D阵列,dot计算沿第一个非单一维度的标量积 。因此,对于两个3x11阵列,它计算返回标量的11个点产品,因此为1x11。

这相当于:

sum(A.*B)

如果您不打算执行点积,请省略总和以获得逐元素乘法。

答案 1 :(得分:0)

您可以使用contact_force(:,:,k)=km(:,:,k).*actual_interf(:,:,k);来获得3 * 11矩阵。

dot将在矩阵的每一列上执行标量点积,并为每列返回一个值,即1 * 11矩阵。

答案 2 :(得分:0)

两个向量的点积将每个元素相乘,然后将结果相加以产生一个数字。

当在两个2D矩阵上调用Matlab中的dot()函数时,将计算每个列的点积。因此,对于每列,您会得到一个标量结果,这就是为什么答案返回为1x11

答案 3 :(得分:0)

C = dot(A,B)返回向量A和B的标量乘积。 如果您的矩阵是2D,例如A和B是m * n矩阵,然后它将计算A和B的每列的点积。如您所知,两个向量的点积是单个数。因此它会给你一个1 * n的矢量作为resutl;