Matlab Matrix Vector умножение - PullRequest
       38

Matlab Matrix Vector умножение

0 голосов
/ 25 октября 2019

Я совершенно новичок в 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 на последний элемент.

Не могу найти решение. Любая помощь высоко ценится!

Спасибо, Пол

1 Ответ

2 голосов
/ 25 октября 2019

Если вы измените свой ввод 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

Надеюсь, это поможет!

...