There is no way to do it without for-loops. Note that mat2cell and friends are all mfiles that use loops internally.
The data organization you are pursuing is ill-advised. Instead of cell arrays, you should just cat() them into a 4D numeric array
Now to access a tx3 sub-array, you can do things like
It would have been much better and cleaner if you had instead made the original arrays tx1xmxn. That way, you could concatenate as
and your sub-arrays would be in more efficient memory-contiguous blocks and also more simply indexed as D(:,:,i,j). You can use permute() to achieve this, of course, but permute() is an expensive operation.