MATLAB:点积的矩阵

时间:2017-03-24 06:29:42

标签: matlab matrix dot-product

我有两个大小为X 800E3x45且大小为W的{​​{1}}的矩阵。如何创建大小为45x35的矩阵,其中每个条目都是800E3x35行和X列的点积?

1 个答案:

答案 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. 的每一列
  4. 使用arrayfun(extern)获取X的每一行。
  5. 我们得到单元格数组的结果,所以让我们把它转换成数字矩阵 - 使用`cell2mat'
  6. P.S。我认为使用bsxfun可以有更优雅的解决方案,但这是我能想象的第一个。