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

23 Ansichten (letzte 30 Tage)
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.

Akzeptierte Antwort

Stephen23
Stephen23 am 23 Mär. 2022
Bearbeitet: Stephen23 am 23 Mär. 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 Kommentare
Stephen23
Stephen23 am 24 Mär. 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

Melden Sie sich an, um zu kommentieren.

Weitere Antworten (1)

Arif Hoq
Arif Hoq am 23 Mär. 2022
Bearbeitet: Arif Hoq am 23 Mär. 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

Kategorien

Mehr zu Linear Algebra finden Sie in Help Center und File Exchange

Produkte


Version

R2021b

Community Treasure Hunt

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

Start Hunting!

Translated by