【问题标题】:Create matrix in Matlab enumerating coordinates在Matlab中创建矩阵枚举坐标
【发布时间】:2013-10-09 18:45:40
【问题描述】:

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

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

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

提前致谢!

【问题讨论】:

  • ind2submeshgrid 密切相关

标签: matlab matrix


【解决方案1】:
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

【讨论】:

    【解决方案2】:

    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
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-12-26
      • 1970-01-01
      • 1970-01-01
      • 2016-03-08
      • 2021-04-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多