2012-05-28 5 views
3

У меня есть две матрицы 4x2. Как я могу достичь такого умножения: вывод должен быть матрицей 4x1, где каждый элемент представляет собой сумму произведений элементов в строках в исходных матрицах. Как это:Умножить два элемента матрицы с суммированием

[1 2; 
A = 3 4; 
    5 6; 
    7 8] 

    [1 2; 
B = 3 4; 
    5 6; 
    7 8] 

результат C матрица будет:

[1*1 + 2*2; 
C = 3*3 + 4*4; 
    5*5 + 6*6; 
    7*7 + 8*8] 

ответ

2

Вот еще аккуратнее ответ:

C = dot(A, B, 2); 

Вы по существу хотите точечный продукт строк. Это одна векторная операция в MATLAB, поэтому более эффективна, чем элементный продукт, а затем операция суммирования.

2

Мой MATLAB немного ржавый, но попробовать

D = A .* B; 
C = D(:,1) + D(:,2); 

Первая операция будет производить матрицу 4x2, которая содержит продукты соответствующих элементов из A и B, а вторая операция добавляет продукты из той же строки.

Результаты, которые вы ищете также диагональные элементы из матрицы продукта, так что вы можете использовать

C = diag(A * transpose(B)); 

хотя это было бы очень неэффективно для больших матриц.

+11

Или просто 'sum (A. * B, 2)' – Ansari

+0

@Ansari: Nice; Я не знал, что 'sum()' можно использовать таким образом. –

+1

@ Ансари: Отлично. Это то, что я искал. Ваше решение работает для матриц любого размера. Если вы опубликуете свой комментарий в качестве ответа, я помечаю его как правильно – Alkersan

1

Aasmund Eldhuset в основном правильно, но я считаю, что последняя строка должна быть

C = D(:,1) + D(:,2); 

, как вы хотите, чтобы подвести каждую строку в последнем столбце

+0

Извинения. Я неправильно прочитал предыдущий комментарий. Это действительно правильно. – lajulajay

+0

Собственно, вы не ошибались в этом - примерно на минуту он действительно читал 'D (1, :) + D (2, :)', так как я забыл, является ли Matlab основным строком или столбцом. Тем не менее, исправления, подобные этому, должны быть опубликованы как комментарий (или вы можете сделать их сами, когда набрали достаточную репутацию). :-) –

+0

Точка взята и хорошо знать, что я не представлял вещей: P. – lajulajay

Смежные вопросы