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

19 次查看(过去 30 天)
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.

采纳的回答

Stephen23
Stephen23 2022-3-23
编辑:Stephen23 2022-3-23
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 个评论
Stephen23
Stephen23 2022-3-24
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

请先登录,再进行评论。

更多回答(1 个)

Arif Hoq
Arif Hoq 2022-3-23
编辑:Arif Hoq 2022-3-23
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

类别

Help CenterFile Exchange 中查找有关 Troubleshooting Linearization Results 的更多信息

产品


版本

R2021b

Community Treasure Hunt

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

Start Hunting!

Translated by