MATLAB: How to represent set of sets in MATLAB

MATLABset

I want to create a series of sets C that
… …
So i use the code
N = 10;
C{1} = []; % C_0 because MATLAB index starts from 1
C{2} = 1:N;
C{3} = zeros(1,length(C{2})*N);
count = 0;
for r = 1:length(C{2})
ri = C{2}(r);
for s = ri+1:N
count = count + 1;
ri2 = [ri,s]
C{3}(count) = ri2; % Error: Unable to perform assignment because the left and right sides have a different number of elements.
end
end
C{3} = C{3}(C{3}~=0);
How can i fix this code and improve efficiency?
Thanks

Best Answer

Use a single cell array, with one entry for each of the number of levels you want to carry this out to. Each entry will be a numeric array with the same number of columns as (cell index minus 1)
To get level M from level (M-1), take the array from level M-1 and find out how many rows it currently has, R. Now repmat() the content of that previous level vertically N times, and append a new column which is the elements 1:N repeated vertically R times each.
The only explicit loop needed is according to the number of levels you are using. (repmat or repelem might use implicit loops.)