Я работаю над программным обеспечением в MATLAB, и я считаю, что достиг предела моих знаний, когда дело доходит до оптимизации и эффективности. Вот где может быть полезен опыт людей в StackOverflow.MATLAB - Эффективный вектор-строка * Матрица * column-vector
Использование профилировщика MATLAB, я нашел, что последняя неэффективна строка кода является умножение следующим образом:
function [energy] = getEnergy(S,W)
energy = -(S*W*S');
end
S
является вектор-строка 1
х N
, W
является N
х N
матрица (хотя это не только диагональная матрица), а S'
- это вектор-столбец N
x 1
, умножение которого возвращает число.
Я понимаю, что это примитивная операция, но мне было интересно, есть ли способ ускорить это.
Я пробовал искать Google и т. Д., Но, к сожалению, я не знаю правильных ключевых слов для поиска. Прошу прощения, если это дубликат.
Заранее спасибо.
фотография вашего профиля немного оскорбительна. вы бы решили заменить его чем-то менее тревожным? – Shai
@sudosensei Существуют ли какие-либо специальные атрибуты для матрицы 'W'? Например, это [симметричный] (http://en.wikipedia.org/wiki/Symmetric_matrix)? –
Matlab довольно эффективен, когда дело доходит до матричных/векторных продуктов. Используйте 'profiler', чтобы более тщательно определить узкое место. – Shai