Матричное и тензорное умножение

У меня есть матрица X размерности nx2.

Используя эту матрицу, я хочу построить тензор Y размером 2x2xn. Так что Y(:, :, i) = X(i, :)'*X(i, :)

Можно ли это сделать в Matlab без цикла, используя некоторую операцию линейной алгебры?


person ssb    schedule 11.09.2014    source источник


Ответы (1)


bsxfun решение на основе -

Y = permute(bsxfun(@times, X, permute(X,[1 3 2])),[3 2 1])
person Divakar    schedule 11.09.2014
comment
+1 Если бы ОП действительно хотел ', здесь потребовалось бы комплексное сопряжение. Но он, вероятно, имел в виду просто .' - person Luis Mendo; 11.09.2014
comment
@LuisMendo Да, если это не упомянуто в вопросе, с точки зрения отвечающего безопаснее принять ' как транспонирование, я думаю. - person Divakar; 12.09.2014