Reading the matrix elements row wise

13 vues (au cours des 30 derniers jours)
Salahuddin Tariq
Salahuddin Tariq le 30 Déc 2020
Commenté : Salahuddin Tariq le 31 Déc 2020
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.

Réponse acceptée

Paul Hoffrichter
Paul Hoffrichter le 31 Déc 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 commentaires
Paul Hoffrichter
Paul Hoffrichter le 31 Déc 2020
Modifié(e) : Paul Hoffrichter le 31 Déc 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 le 31 Déc 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.

Connectez-vous pour commenter.

Plus de réponses (1)

Paul Hoffrichter
Paul Hoffrichter le 30 Déc 2020
Modifié(e) : Paul Hoffrichter le 30 Déc 2020
A = [1 2 3; 4 5 6];
Atr = transpose(A);
Atr(1:6)
ans =
1 2 3 4 5 6

Catégories

En savoir plus sur Logical dans Help Center et File Exchange

Community Treasure Hunt

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

Start Hunting!

Translated by