【问题标题】:How do I multiply 3 vectors and obtain a 3D matrix in MATLAB?如何在 MATLAB 中将 3 个向量相乘并获得 3D 矩阵?
【发布时间】:2014-01-08 05:27:15
【问题描述】:

我想要做的是在没有循环的情况下获得像下面的 sn-p 这样的结果。

x = [1 2 3 4];
y = [2 3 4];
z=[7 8];

[x'*y]

for k=1:size(z, 2)
z2(:,:,k)=[x'*y]*z(k);
end

z2

但是,循环可能会减慢 MATLAB。没有他们,我如何处理任务?

【问题讨论】:

标签: arrays matlab matrix


【解决方案1】:

您可以这样做,因为z 是`向量:

bsxfun(@times, reshape(z, 1, 1, []), [x'*y])

如果z 本身是一个二维矩阵,并且您想在每个级别进行矩阵乘法,那么您需要使用我在评论中发布的链接。但是因为每次乘以一个标量,就可以使用@times

【讨论】:

    【解决方案2】:

    看看here。在此基础上,您可以这样做:

    x = [1 2 3 4];
    y = [2 3 4];
    z=[7 8];
    
    
    % replicate [x'*y] into 3D array.
    d = repmat([x'*y], [1, 1, numel(z)])
    
    % multiplay by z vector
    z2 = bsxfun(@times, d, reshape(z,[1, 1, numel(z)]))
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-12-04
      • 1970-01-01
      • 1970-01-01
      • 2015-04-19
      • 2016-01-22
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多