2013-10-09 5 views
1

Есть ли эффективный способ (например, без использования для циклов вручную) для создания матрицы в Matlab, которая перечисляет двумерные координаты матрицы заданного размера?Создать матрицу в перечисляемых координатах Matlab

Например, если я предоставлена ​​м х п матрицу, я хочу, чтобы в результате млн х 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

Роберт П. имеет правильный (и элегантный) ответ с изящным использованием 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 
Смежные вопросы