2017-03-24 131 views
-3

我有兩個矩陣,大小爲800E3x45X和大小爲45x35W。我如何創建一個大小爲800E3x35的矩陣,其中每個條目是一行X的一列點和W的列?MATLAB:點積的矩陣

+3

試用'M = X * W' – eyllanesc

+0

爲什麼你的所有問題都一樣? –

回答

1

也許這是不是最好的方式爲閱讀和理解的代碼,但是你可以使用下一個公式來完成在矢量視圖:

res = cell2mat( arrayfun(@(y) arrayfun(@(x) dot(X(y,:), W(:,x)), 1:size(W,2)), ... 
       (1:size(X,1))', 'UniformOutput', false)) 

說明:

  1. 我們需要採取dot(X(y,:), W(:x)) - 對於X的每一行(y表示行號),我們對W的所有列採用點(x是W的列)
  2. 使用arrayfun(內部)獲得W的每一列
  3. 使用arrayfun(EXTERN)用於獲取X的每一行
  4. 我們得到了導致細胞陣列,所以讓其轉換爲數字矩陣 - 用`cell2mat」

附:我認爲可以有更優雅的解決方案,使用bsxfun,但這是我能想象的第一個。