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
謝謝!
是否有一種有效的方法(例如,不使用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
謝謝!
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
羅伯特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
'ind2sub'和'meshgrid'密切有關 –