Make a transpose function in for loop
古いコメントを表示
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
採用された回答
その他の回答 (1 件)
Jan
2011 年 11 月 30 日
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
カテゴリ
ヘルプ センター および File Exchange で Programming についてさらに検索
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!