Multiply each column in MxN matrix with it's transpose to create MxMxN matrix
2 Ansichten (letzte 30 Tage)
Ältere Kommentare anzeigen
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 Kommentare
Antworten (2)
James Tursa
am 28 Jul. 2017
Bearbeitet: James Tursa
am 28 Jul. 2017
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 Kommentare
Andrei Bobrov
am 28 Jul. 2017
Bearbeitet: Andrei Bobrov
am 28 Jul. 2017
Let A - your matrix [M x N]
out = bsxfun(@times,permute(A,[1,3,2]),permute(A,[3,1,2]));
0 Kommentare
Siehe auch
Kategorien
Mehr zu Text Data Preparation finden Sie in Help Center und File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!