我正在MATLAB中做兩個3x11矩陣的點積,這些矩陣是多維的,但我一次只能訪問一個'頁面'。從我的數學知識,我會期待一個3x11矩陣追溯到結果,而是使用下面的代碼時:matlab中兩個3 x 11矩陣的點積給出了一個1x11矩陣
contact_force(:,:,k)=dot(km(:,:,k),actual_interf(:,:,k))
答案是一個1x11矩陣形式
我正在MATLAB中做兩個3x11矩陣的點積,這些矩陣是多維的,但我一次只能訪問一個'頁面'。從我的數學知識,我會期待一個3x11矩陣追溯到結果,而是使用下面的代碼時:matlab中兩個3 x 11矩陣的點積給出了一個1x11矩陣
contact_force(:,:,k)=dot(km(:,:,k),actual_interf(:,:,k))
答案是一個1x11矩陣形式
您可以使用contact_force(:,:,k)=km(:,:,k).*actual_interf(:,:,k);
反而得到3 * 11矩陣。
dot
將在矩陣的每一列上執行標量點乘積,併爲每列返回一個值,從而得到一個1 * 11矩陣。
對於N-D陣列,dot
沿着第一個非單實體維度計算標量積。因此,對於兩個3x11陣列,它計算返回標量的11點產品,因此爲1x11。
這是等價的:
sum(A.*B)
如果你不打算執行的點積,省略總和只得到逐元素相乘。
兩個向量的點積將每個元素相乘,然後將結果相加以產生一個數字。
當在兩個二維矩陣上調用Matlab中的dot()
函數時,將爲每個列計算點乘積。因此,對於每一列,您將得到一個標量結果,這就是爲什麼答案返回爲1x11
C =點(A,B)返回矢量A和B的標量積。 如果矩陣是二維的,例如。 A和B是m * n矩陣,那麼它將計算A和B每列的點積,並且如你所知,兩個向量的點積是單個數。因此它會給你一個1 * n向量作爲resutl;
你確實是指http://www.mathworks.co.uk/help/matlab/ref/dot.html DOT產品在這裏,還是你想元素乘法'。*'? – Edric