MATLAB: How to generate Combination of special sets and subsets

MATLAB

a = [100, 125, 150, 175, 200, 225, 250, 275, 300, 325]; %Initial Guess
Fx(:,:,1) = [100, 125, 150, 175, 200, 225, 250, 275, 300, 325];
Fx(:,:,2) = [125, 150, 175, 200, 225, 250, 275, 300, 325, 100]; % Delete First Column and add to last
Fx(:,:,3) = [150, 175, 200, 225, 250, 275, 300, 325, 100, 125]; % Delete Second Column and add to last
Fx(:,:,4) = [175, 200, 225, 250, 275, 300, 325, 100, 125, 150];
Fx(:,:,5) = [200, 225, 250, 275, 300, 325, 100, 125, 150, 175];
Fx(:,:,6) = [225, 250, 275, 300, 325, 100, 125, 150, 175, 200];
Fx(:,:,7) = [250, 275, 300, 325, 100, 125, 150, 175, 200, 225];
Fx(:,:,8) = [275, 300, 325, 100, 125, 150, 175, 200, 225, 250];
Fx(:,:,9) = [300, 325, 100, 125, 150, 175, 200, 225, 250, 275];
Fx(:,:,10)= [300, 325, 100, 125, 150, 175, 200, 225, 250, 275];
Tx = [Fx(:,:,1),Fx(:,:,2),Fx(:,:,3),Fx(:,:,4),Fx(:,:,5),Fx(:,:,6),Fx(:,:,7),Fx(:,:,8),Fx(:,:,9),Fx(:,:,10)]; % Combine all subsets
Cx(:,:,1) = [100, 125, 150, 175, 200, 225, 250, 275, 300, 325];
Cx(:,:,2) = [125, 150, 175, 200, 225, 250, 275, 300, 325];
Cx(:,:,3) = [150, 175, 200, 225, 250, 275, 300, 325];
Cx(:,:,4) = [175, 200, 225, 250, 275, 300, 325];
Cx(:,:,5) = [200, 225, 250, 275, 300, 325];
Cx(:,:,6) = [225, 250, 275, 300, 325];
Cx(:,:,7) = [250, 275, 300, 325];
Cx(:,:,8) = [275, 300, 325];
Cx(:,:,9) = [300, 325];
Cx(:,:,10)= [300];
Tc = [Cx(:,:,1),Cx(:,:,2),Cx(:,:,3),Cx(:,:,4),Cx(:,:,5),Cx(:,:,6),Cx(:,:,7),Cx(:,:,8),Cx(:,:,9),Cx(:,:,10)];
%Please help me to find Tx and Tc

Best Answer

This is called a circulant matrix. I have written a function that can be found in the File Exchange:
A = [100 125 300 400]
B = circulant(A,-1)
tf = flipud(tril(true(size(B))))
C = B(tf)