在Matlab中创建矩阵枚举坐标

时间:2013-10-09 18:45:41

标签: matlab matrix

是否有一种有效的方法(例如,不手动使用for循环)在Matlab中创建一个列举给定大小的矩阵的二维坐标的矩阵?

例如,如果给出一个m×n矩阵,我希望得到的mn x 2矩阵如下:

1  1
1  2
1  3
...
1  n
2  1
2  2
...
m  1
m  2
...
m  n

提前致谢!

2 个答案:

答案 0 :(得分:2)

mat = [1 2;3 4;5 6;7 8;9 10];
[m,n] = size(mat);
vec = [kron(1:m,ones(1,n)); kron(ones(1,m),1:n)]'
   1   1
   1   2
   2   1
   2   2
   3   1
   3   2
   4   1
   4   2
   5   1
   5   2

答案 1 :(得分:1)

Robert P.有一个正确(优雅)的答案,使用了kron,但只是为了好玩,这里是ndgrid的替代方案,

>> mat=zeros(5,2);
>> [nn,mm] = ndgrid(1:size(mat,2),1:size(mat,1))
>> vec = [mm(:) nn(:)]
vec =
     1     1
     1     2
     2     1
     2     2
     3     1
     3     2
     4     1
     4     2
     5     1
     5     2