首页 > 解决方案 > Matlab矩阵向量乘法

问题描述

我对 Matlab 完全陌生,有一个简单的问题(对我来说不是那么简单):

我有一个矩阵 x:

x = 1 2 3 
    4 5 6 
    7 8 9
    10 11 12

和一个向量 y:

y = 1 2 3

现在我想将数字 1 到 4 乘以向量的第一个元素,将数字 5 到 8 乘以第二个元素,将 9 到 12 乘以最后一个元素。

找不到解决办法。非常感谢任何帮助!

谢谢保罗

标签: matlabmatrixmultiplication

解决方案


如果您修改输入x以将所有“组”设置为新输入的列xx,例如,通过相应的转置重塑 x,您可以使用 (element-wise) multiplication。MATLAB 的隐式扩展允许这种(逐元素)矩阵运算。(在 MATLAB R2016b 之前,需要这样做bsxfun。)

那将是我的解决方案:

% Inputs
x = [1 2 3; 4 5 6; 7 8 9; 10 11 12]
y = [1 2 3]

% Transpose and reshape x to set up all "groups" as new columns
xx = reshape(x.', 4, 3)

% (Element-wise) Multiplication using implicit expansion
z = xx .* y

输出:

x =
    1    2    3
    4    5    6
    7    8    9
   10   11   12

y =
   1   2   3

xx =
    1    5    9
    2    6   10
    3    7   11
    4    8   12

z =
    1   10   27
    2   12   30
    3   14   33
    4   16   36

希望有帮助!


推荐阅读