MATLAB: How to subtract variable dimension arrays

arraysMATLAB

Right now I do this:
dx = dists(2:end,1,:) - dists(1:end-1,1,:);
dy = dists(2:end,2,:) - dists(1:end-1,2,:);
dz = dists(2:end,3,:) - dists(1:end-1,3,:);
where:
>>size(dists)
ans =
13 9 1159
I would like to do this where dists could be (13,9,1159,8) or an arbitrarily larger dimensions tacked on to the end. The two arrays I'm subtracting would always be the same size and the same particular slices would be subtracted. (as you can see, I'm just subtracting the 1st from 2nd, 2nd from 3rd, etc along three columns in three vector calcs)
How would I specify that for arbitrarily larger dimensions instead of an if statement on size and then ':', or ':,:', or ':,:,:', etc.?

Best Answer

Use diff specifying the dimension:
dists = rand(100,4,23);
drow = diff(dists,1,1); %rows first dimension
dcol = diff(dists,1,2); %column second dimension
dpage = diff(dists,1,3); %pages third dimension
Now you could just loop over the dimensions and store the results in a cell array.