Make a transpose function in for loop
Afficher commentaires plus anciens
I have to make transpose function in for loop for matrix. I am trying to get it to work but it needs some imporvements.
function cd=MyTranspose(A)
[row col] = size(A);
for m=1:length(row)
for n=1:length(col)
cd(n,m)=A(m,n);
end
end
Réponse acceptée
Plus de réponses (1)
Jan
le 30 Nov 2011
It is essential to pre-allocate the output. Otherwise the output matrix grows with every iteration and the runtime increases exponentially with the matrix size.
This method is 10% faster (Matlab 2009a/64/Win7) using the linear index instead of 2 indices:
function B=MyTranspose(A)
[row, col] = size(A);
B = zeros(col, row); % Pre-allocate!
iX = 1;
for iCol = 1:col
iY = iCol;
for iRow = 1:row
B(iY) = A(iX);
iY = iY + col;
iX = iX + 1;
end
end
Catégories
En savoir plus sur Programming dans Centre d'aide et File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!