vectorization of nested for loop
3 次查看(过去 30 天)
显示 更早的评论
i want to transfer an image pixels coordination into matrix (rows x 2) , this is the code with for loops, i want to vectorize it because it takes so much time for big images.
I=imread('1.bmp');
[rows,columns,~]=size(I);
pix_im=[];
for l=1:rows
for c=1:columns
pix_im=[pix_im;l c];
end
end
0 个评论
采纳的回答
Ameer Hamza
2020-11-15
编辑:Ameer Hamza
2020-11-15
No wonder this code runs slow. You are using dynamic memory allocation. You can get several-fold speed gain just by pre-allocation: https://www.mathworks.com/help/matlab/matlab_prog/preallocating-arrays.html. However, you don't even need a loop for this. You can do it much more efficiently like this.
I=imread('1.bmp');
[rows,columns,~]=size(I);
[c,r] = ndgrid(1:columns, 1:rows);
pix_im = [r(:) c(:)]
3 个评论
更多回答(0 个)
另请参阅
类别
在 Help Center 和 File Exchange 中查找有关 Loops and Conditional Statements 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!