MATLAB: How to generalise this

cellgeneralizendgridrepetitive

I made this code;
x = [0 1]'; y = [0 1]';
m = 2; n = 1;
cell = {x, x, y}; % 2 x and 1 y
[a_1 a_2 b_1] = ndgrid(cell{:});
a_1 = a_1(:); a_2 = a_2(:);
b_1 = b_1(:);
But if I generalise this, by assigning x, y, m, n,
How can I make … parts?
cell = {x, ... , x, y, ... , y}; % m Xs and n Ys
[a_1 a_2 ... a_m b_1 ... b_n] = ndgrid(cell{:});
a_1 = a_1(:); ... a_m = a_m(:);
b_1 = b_1(:); ... b_n = b_n(:);
Thanks to all!

Best Answer

As per my comment to your question: numbered variables are always an indication that your design is wrong. You should never have variables a_1, a_2, ... Instead you should have just one a variable (a cell array, a matrix, whatever is appropriate) that you index, e.g. a(1), a(2), ... With that design the ndgrid assignment is trivial.
%demo data
x = [0 1]'; y = [1 0]';
m = 10; n = 7;
c = repelem({x, y}, [m, n]); %creates {x, ... , x, y, ... , y}; % m Xs and n Ys
[c{:}] = ndgrid(c{:}); %ndgrid
c = reshape(cat(m+n+1, c{:}), [], m+n);
a = c(:, 1:m);
b = c(:, m+1:end);
a(:, i) is your a_i, b(:, i) is your b_i.