MATLAB: How do you circshift progressive rows an increasing amount

circshiftMATLABmatrix manipulation

If I have a matrix:
[nan nan nan nan nan]
[ 1a nan nan nan nan]
[ 1b 2b nan nan nan]
[ 1c 2c 3c nan nan]
[ 1d 2d 3d 4d nan]
I want to change it to this:
[ 1a 2b 3c 4d nan]
[ 1b 2c 3d nan nan]
[ 1c 2d nan nan nan]
[ 1d nan nan nan nan]
[nan nan nan nan nan]
I tried:
for K = 1:length(A)
A = circshift(A(:,K),K);
Thank you.

Best Answer

You need to index a column in A in your output as well.
for K = 1:size(A,2)
A(:,K) = circshift(A(:,K),K);
end
If you want to move every NaN to the bottom, you can also use the sort function.