Если вы ищете более векторный результат, вы можете создать продукты в сумме по bsxfun
, затем sum
по всей матрице, чтобы получить ответ (à la Adam Farabaugh). Ваше уравнение в виде LaTeX выглядит следующим образом (для меня легче читать):
Похоже t
это 2D матрица, а r
вектор. С приведенным выше утверждением, похоже, вы берете каждую строку t
и умножаете эту строку поэтапно на r
с каждым элементом в r
, поднятом до третьего уровня. Вы повторяете это для всех строк в t
, затем суммируйте результаты. Предполагая, что r
есть вектор-строка, а количество столбцов в t
спичек количество элементов в r
, сделать что-то вроде этого:
prods = bsxfun(@times, r.^3, t);
result = sum(prods(:));
Первый оператор будет принимать r
и создает матрицу, где каждая строка этого матрицей будет копия r
, поднятая до третьей мощности. Это является следствием bsxfun
, что является коротким для Binary Singleton EXPansion FUNTION. В двух словах она копирует все размеры (размеры) переменной, которая имеет меньшие размеры между ними, и реплицирует элементы так, чтобы обе переменные соответствовали размеру.
Затем мы берем эту новую матрицу и выполняем умножение по элементам с матрицей t
. Как только мы это сделаем, мы просто суммируем по всем элементам в этой матрице. Вы можете вложить sum
звонки, как то, что предлагает Адам, но если вы действительно хотите сделать его более общим, вы можете просто создать матрицу так, чтобы это был один вектор, а затем применить sum
на этом одиночном векторе.
Спасибо, но, похоже, я неправильно сформулировал свой вопрос ... Тем не менее, я только нашел решение моей реальной проблемы, но поскольку это правильный ответ на вопрос, я буду отмечать его как правильный. Приносим извинения за неудобства. – Riley