2014-01-29 89 views
1

我正在MATLAB中做兩個3x11矩陣的點積,這些矩陣是多維的,但我一次只能訪問一個'頁面'。從我的數學知識,我會期待一個3x11矩陣追溯到結果,而是使用下面的代碼時:matlab中兩個3 x 11矩陣的點積給出了一個1x11矩陣

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

答案是一個1x11矩陣形式

+1

你確實是指http://www.mathworks.co.uk/help/matlab/ref/dot.html DOT產品在這裏,還是你想元素乘法'。*'? – Edric

回答

0

您可以使用contact_force(:,:,k)=km(:,:,k).*actual_interf(:,:,k);反而得到3 * 11矩陣。

dot將在矩陣的每一列上執行標量點乘積,併爲每列返回一個值,從而得到一個1 * 11矩陣。

1

對於N-D陣列,dot沿着第一個非單實體維度計算標量積。因此,對於兩個3x11陣列,它計算返回標量的11點產品,因此爲1x11。

這是等價的:

sum(A.*B) 

如果你不打算執行的點積,省略總和只得到逐元素相乘。

0

兩個向量的點積將每個元素相乘,然後將結果相加以產生一個數字。

當在兩個二維矩陣上調用Matlab中的dot()函數時,將爲每個列計算點乘積。因此,對於每一列,您將得到一個標量結果,這就是爲什麼答案返回爲1x11

0

C =點(A,B)返回矢量A和B的標量積。 如果矩陣是二維的,例如。 A和B是m * n矩陣,那麼它將計算A和B每列的點積,並且如你所知,兩個向量的點積是單個數。因此它會給你一個1 * n向量作爲resutl;