필터 지우기
필터 지우기

Multiply each column in MxN matrix with it's transpose to create MxMxN matrix

조회 수: 1 (최근 30일)
T
T 2017년 7월 28일
편집: Andrei Bobrov 2017년 7월 28일
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!

답변 (2개)

James Tursa
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;

Andrei Bobrov
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]));

카테고리

Help CenterFile Exchange에서 Text Data Preparation에 대해 자세히 알아보기

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by