У меня 2 матрицы А (NXM) и В (NXD) и хочет, чтобы умножить поэлементно каждый столбец А с
ряд
B. Есть т столбцов в A и n 1xd векторов в B, поэтому результатом являются m nxd-матрицы. Затем я хочу суммировать (result_i, 1), чтобы получить m 1xd векторы, которые я хочу применить vertcat для получения матрицы mxd. Я делаю эти операции, используя для цикла, и он медленный, потому что n и d большие. Как я могу векторизовать это в Matlab, чтобы сделать его быстрее? Спасибо.Как векторизовать это матричное умножение в MATLAB
EDIT:
Вы все в порядке: я был смущен мой собственный вопрос. То, что я имел в виду под «умножить element-wise, каждый столбец A со строкой B» состоит в том, чтобы умножить n элементов столбца в A с соответствующими n строками B. Что я хочу сделать с одним столбцом A, является как следует (и я повторяю это для т столбцов матрицы а, то vertcat вектора C вместе, чтобы получить матрицу МКД):
column_of_A =
3
3
1
B =
3 1 3 3
2 2 1 2
1 3 3 3
C = sum(diag(column_of_A)*B, 1)
16 12 15 18
Если вы умножаете каждый столбец 'A' на каждую строку' B', то вы получаете m * n матриц, а не m. Если нет, то как вы выбираете строку из 'B' для данного столбца' A'? Дано ли это заранее? –
@Itamar Katz: Я должен умножить каждый элемент из m столбцов A _elementwise_ на каждую строку B, то есть [1 2 3] '* [1 1] = [1 1; 2 2; 3 3]. – Martin08
Это не умножение по элементам, а вместо этого это матричное умножение. – Jonas