Умножение нижней и верхней треугольной матрицы - PullRequest
1 голос
/ 26 января 2011

Я хочу умножить нижнюю треугольную и верхнюю треугольную матрицу ... обычное матричное умножение - пустая трата времени, потому что оно тратит так много времени на умножение нулей ... Я смотрю, есть ли конкретный для Matlab способ сэкономить время вычислений .. матрицы имеют размер порядка тысяч

Ответы [ 2 ]

5 голосов
/ 26 января 2011

Вы можете получить некоторую выгоду, используя массивы SPARSE , поскольку они используют меньше памяти и не умножают на ноль, но имеют небольшие вычислительные затраты.

В противном случае я искренне сомневаюсь, что вы можете победить Matlab за эффективность в манипулировании линейной алгеброй, написав свой собственный код Matlab.

2 голосов
/ 27 января 2011

обычное матричное умножение является пустой тратой, поскольку оно тратит столько времени на умножение нулей

Таким образом, половина коэффициентов каждой матрицы равна нулю, что означает, что схема умножения наивной матрицы будет«тратить» 3/4 своего времени.И вы хотите попытаться восстановить это время, выполнив что-то более сложное?

Я бы поставил умеренные суммы денег, которые вы не можете победить в MATLAB.Его матричные процедуры лежат в основе его вычислительного механизма.Скорее всего, они проверяют нулевые коэффициенты и самостоятельно устраняют это «потерянное» время.

Я бы повторил комментарии @ Джонаса, но добавил бы, что единственный раз, когда вы должны использовать разреженные матрицы, это если подавляющее большинствокоэффициентов равны нулю.Как в> 90%, а не в 50%.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...