我在MATLAB中做两个3x11矩阵的点积,这些矩阵是多维的,但我一次只访问一个'页'。根据我的数学知识,我希望返回3x11矩阵作为结果,但使用以下代码时:
contact_force(:,:,k)=dot(km(:,:,k),actual_interf(:,:,k))
答案是1x11矩阵的形式
答案 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;