MATLAB: How to make a matrix with all possible combination

MATLABmatrix

Hi everyone!
I would like to make a script that, for number n I can make a matrix M((2*n+1)^2,2).
The entry of this matrix must be all the combinations of n number. For example, for n=2, the matrix would contain:
p=[-2 -2;-2 -1;-2 0; -2 1;-2 2;-1 -2;-1 -1;-1 0;-1 1;-1 2;0 -2;0 -1;0 0;0 1;0 2;1 -2;1 -1;1 0;1 1;1 2;2 -2;2 -1;2 0;2 1;2 2];
I have tried to make a for loop but, instead of getting all the combinations of number, I get the same number repeated five time.
This was the code I was using:
% code
n=2; m=n; s=zeros((2*n+1)^2,2);
for i=-n:1:n
h=[s(:,1)+i,s(:,2)+i]
end
Thanks.

Best Answer

>> [A,B] = ndgrid(-2:2);
>> [A(:),B(:)]
ans =
-2 -2
-1 -2
0 -2
1 -2
2 -2
-2 -1
-1 -1
0 -1
1 -1
2 -1
-2 0
-1 0
0 0
1 0
2 0
-2 1
-1 1
0 1
1 1
2 1
-2 2
-1 2
0 2
1 2
2 2
For a general solution, try this:
>> n = 3;
>> C = cell(1,n);
>> [C{:}] = ndgrid(-n:n);
>> C = cellfun(@(m)m(:),C,'uni',0);
>> [C{:}]
ans =
-3 -3 -3
-2 -3 -3
-1 -3 -3
0 -3 -3
1 -3 -3
2 -3 -3
3 -3 -3
-3 -2 -3
-2 -2 -3
-1 -2 -3
... lots of lines here
2 2 3
3 2 3
-3 3 3
-2 3 3
-1 3 3
0 3 3
1 3 3
2 3 3
3 3 3