Reading the matrix elements row wise

20 views (last 30 days)
Let say I have a matrix A = [1 2 3; 4 5 6], I can access its elements by writing A(1) and A(2) etc. but this index runs column wise. How to access elements of matrix row by row, for example if I write A(2), I want to get 2 and not 4.

Accepted Answer

Paul Hoffrichter
Paul Hoffrichter on 31 Dec 2020
If you do not want to take the transpose of the A matrix, you can work with the subscripts instead.
A = [1 2 3; 4 5 6];
sz = size(A);
fiA = @(x) sub2ind(sz, ceil( x/sz(2) ), rem(x-1, sz(2)) + 1);
xx = 1:numel(A);
A(fiA(xx))
ans =
1 2 3 4 5 6
  2 Comments
Paul Hoffrichter
Paul Hoffrichter on 31 Dec 2020
Edited: Paul Hoffrichter on 31 Dec 2020
To test with another matrix:
B = [1 2 3; 4 5 6; 10 20 30; 40 50 60; 70 80 90];
sz = size(B);
fiB = @(x) sub2ind(sz, ceil( x/sz(2) ), rem(x-1, sz(2)) + 1);
yy = 1:numel(B);
B(fiB(yy))
ans =
Columns 1 through 8
1 2 3 4 5 6 10 20
Columns 9 through 15
30 40 50 60 70 80 90
A(fiA(5))
ans =
5
B(fiB(10))
ans =
40
Salahuddin Tariq
Salahuddin Tariq on 31 Dec 2020
Thanks for updating the other methods :) because I was aware that how to do it using the transponse matrix operation. Actually I wanted to avoid the usage of for loop while scanning the elements of matrix.

Sign in to comment.

More Answers (1)

Paul Hoffrichter
Paul Hoffrichter on 30 Dec 2020
Edited: Paul Hoffrichter on 30 Dec 2020
A = [1 2 3; 4 5 6];
Atr = transpose(A);
Atr(1:6)
ans =
1 2 3 4 5 6

Community Treasure Hunt

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

Start Hunting!