Multiply each column in MxN matrix with it's transpose to create MxMxN matrix
조회 수: 5 (최근 30일)
이전 댓글 표시
Hello,
I have a MxN matrix, and I need to multiply each column vector that is of size Mx1 with it's transpose. This gives me a MxM matrix for each column. I can do this in a for loop, to create this MxM matrix for each column and to save it in a MxMxN matrix. But I would like to speed this up because the for loop is taking too long. Any ideas or hints?
Thanks!
댓글 수: 0
답변 (2개)
James Tursa
2017년 7월 28일
편집: James Tursa
2017년 7월 28일
X = your MxN matrix
[M,N] = size(X);
Xcols = reshape(X,M,1,N);
Xrows = reshape(X,1,M,N);
result = bsxfun(@times,Xcols,Xrows);
Or if you have R2016b or later, that last line can be
result = Xcols .* Xrows;
댓글 수: 0
Andrei Bobrov
2017년 7월 28일
편집: Andrei Bobrov
2017년 7월 28일
Let A - your matrix [M x N]
out = bsxfun(@times,permute(A,[1,3,2]),permute(A,[3,1,2]));
댓글 수: 0
참고 항목
카테고리
Help Center 및 File Exchange에서 Resizing and Reshaping Matrices에 대해 자세히 알아보기
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!