2017-03-24 15 views
-3

はサイズ800E3x45Wのサイズが45x35です。どのようにしてサイズ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の各行(行番号を意味する)は、Wのすべての列についてドットを取ります(xはWの列です)。
  2. (内側)を使用して各列を取得します。
  3. Xの各列を取得するための
  4. 使用arrayfun(EXTERNは)我々はセル配列になり得る
  5. 、その数値行列に変換することができます - `cell2mat」

P.S.を使用します私はそこにはより洗練されたソリューションがあると思う、bsxfunを使用してスムースしかし、これは私が想像することができる最初です。

関連する問題