Make a transpose function in for loop
Ältere Kommentare anzeigen
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
Akzeptierte Antwort
Weitere Antworten (1)
Jan
am 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
Kategorien
Mehr zu Programming finden Sie in Hilfe-Center und File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!