vectorization of nested for loop

3 ビュー (過去 30 日間)
chabani mohammed ali
chabani mohammed ali 2020 年 11 月 15 日
コメント済み: chabani mohammed ali 2020 年 11 月 15 日
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

採用された回答

Ameer Hamza
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 件のコメント
Ameer Hamza
Ameer Hamza 2020 年 11 月 15 日
I am glad to be of help!
chabani mohammed ali
chabani mohammed ali 2020 年 11 月 15 日

サインインしてコメントする。

その他の回答 (0 件)

カテゴリ

Help Center および File ExchangeLoops and Conditional Statements についてさらに検索

製品


リリース

R2019a

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by