реклама на сайте
подробности

 
 
> хитрое умножение матриц в Matlab
Daddy Torque
сообщение Apr 19 2011, 10:04
Сообщение #1


Участник
*

Группа: Участник
Сообщений: 25
Регистрация: 21-09-08
Из: СПб
Пользователь №: 40 369



есть две матрицы 8 х 2048. (фактически каждая - это 2048 векторов) нужно получить вектор из 2048 компонент, в котором каждая компонента является результатом скалрярного произведения соответствующих векторов длины 8 из двух исходных матриц.


Код
A1.1 A1.2 A1.3 ... A1.2048
A2.1 A2.2 A1.3 ... A2.2048
..........................
A3.1 A3.2 A3.3 ... A3.2048


B1.1 B1.2 B1.3 ... B1.2048
B2.1 B2.2 B1.3 ... B2.2048
..........................
B3.1 B3.2 B3.3 ... B3.2048

==================

Ax.1*Bx.1,.... Ax.2048*Bx.2048

Такой результат можно получить, сделав diag(A' * B )

но обидно считать произведение таких больших матриц, когда в итоге от этого произведения возьмется только диагональ.

Есть у кого-нибудь идеи, как это можно сделать без циклов и избыточных вычислений ?

Догадался сам.

Делается это очень просто:

C = sum(A .* B);

по сравнению diag(A * B) экономия получилась у меня порядка 60 раз.

Сообщение отредактировал Daddy Torque - Apr 19 2011, 10:07
Go to the top of the page
 
+Quote Post

Сообщений в этой теме


Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 27th July 2025 - 03:25
Рейтинг@Mail.ru


Страница сгенерированна за 0.01309 секунд с 7
ELECTRONIX ©2004-2016