Self-answered, for posterity...
There are V variables stored in individual cells. Each cell contains R number of m x n arrays, where R represents a level of resolution. The goal is to create an R x 1 cell containing an n x m x V array at each level of R.
Assuming each R has the same corresponding dims across all V's (true here since they were outputs of the same resampling method) this is a simple concatenation of m x n arrays to m x n x V arrays. The new dims (3 instead of 2) are specified in the first argument of cat(). There is no need to extract and parse each R into a new object.
out = cell(20,1)
for i=1:numel(dem)
out{i} = cat(3, (Cs{i}, beta{i}, As{i}, TCI{i}, TWI{i}, hs{i});
end
Notably, the original script...
out{i} = out2(:,:,j)(Cs{i}, beta{i}, As{i}, TCI{i}, TWI{i}, hs{i})
... also indexes into an array that was already indexed into. MATLAB doesn't support this. See related post