Если вы измените свой ввод x
, чтобы настроить все "группы" как столбцы нового ввода, скажем, xx
, например, путем транспонирования и изменения формы x
соответственно, вы можете использовать (поэлементно) умножение . неявное расширение 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
Надеюсь, это поможет!