How to convert row-major linear indices to column-major indices?

22 visualizzazioni (ultimi 30 giorni)
I have a row-major linear indices [1,8, 14, 9, 4, 11, 18] from a matrix 3 x 6 (row x column). How to convert this to column-major linear indices [1, 5, 6, 8, 10, 14, 18] without for-loops? I want to generalize for any rectangular or square matrices.

Risposta accettata

Stephen23
Stephen23 il 23 Mar 2022
Modificato: Stephen23 il 23 Mar 2022
S = [3,6]; % matrix size
X = [1,8,14,9,4,11,18]; % row-major linear indices
[Y,Z] = ind2sub(flip(S),X);
V = sub2ind(S,Z,Y) % column-major linear indices
V = 1×7
1 5 6 8 10 14 18
  4 Commenti
Stephen23
Stephen23 il 24 Mar 2022
S = [3,6]; % matrix size
X = [1,5,6,8,10,14,18]; % column-major linear indices
[Y,Z] = ind2sub(S,X);
V = sub2ind(flip(S),Z,Y) % row-major linear indices
V = 1×7
1 8 14 9 4 11 18

Accedi per commentare.

Più risposte (1)

Arif Hoq
Arif Hoq il 23 Mar 2022
Modificato: Arif Hoq il 23 Mar 2022
try reshape function:
A=[1 2 3 4 5 6; 7 8 9 10 11 12;13 14 15 16 17 18] % any matrix
A = 3×6
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
D=reshape(A,[],3)
D = 6×3
1 3 5 7 9 11 13 15 17 2 4 6 8 10 12 14 16 18

Categorie

Scopri di più su Troubleshooting Linearization Results in Help Center e File Exchange

Prodotti


Release

R2021b

Community Treasure Hunt

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

Start Hunting!

Translated by