Traversing an image matrix columnwise
    7 views (last 30 days)
  
       Show older comments
    
Hi guys i wanna traverse a matrix of an image column wise ie. it should consider first column and visit all the rows of that column and so on using for loops. Plz help me if u know the logic or code.
0 Comments
Accepted Answer
  Josh
      
 on 31 Mar 2011
        If I understand your question, the solution is a nested for loop along the lines of
[rows,cols] = size(Matrix);
for col = 1:cols
    for row = 1:rows
        work with Matrix(row,col);
    end
end
2 Comments
More Answers (2)
  MechtEngineer
      
 on 31 Mar 2011
        I think you would want the following, assuming an m x n matrix A(row x column) with position of each array point (i,j)
for j = 1:size(A,2)  % for each column
   for i = 1:size(A,1)  % for each row
      % put your operation in here - I am just adding 1 to each pixel as an eg.
      A(i,j) = A(i,j) + 1;
   end
end
0 Comments
  David Young
      
 on 31 Mar 2011
        Linear indexing uses columnwise ordering, so as long as you don't need the row and column indexes explicitly, you can do
for k = 1:numel(A)
  % operate on A(k)
end
It might be even better to consider whether you can vectorise the operation and avoid the loops altogether.
1 Comment
  MechtEngineer
      
 on 31 Mar 2011
				Impressive solution! That really shortens the code required, and does the same thing. 
And yes, as David Young says above, if you vectorise (or make the desired operations into matrices to add, subtract, multiply, correlate, etc) the operation, it will be quicker than "for" loops - I tried it recently, and my code ran 5 times faster!
See Also
Categories
				Find more on Creating and Concatenating Matrices in Help Center and File Exchange
			
	Products
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!


