2013-10-09 70 views
1

是否有一種有效的方法(例如,不使用for循環手動)在Matlab中創建一個矩陣,列舉給定大小矩陣的二維座標?在Matlab中創建矩陣枚舉座標

例如,如果我給出的m×n個矩陣,我想得到的MN×2矩陣是如下:預先

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

謝謝!

+0

'ind2sub'和'meshgrid'密切有關 –

回答

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

羅伯特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