Concatenating a 3D matrix in the 3rd dimension when some cells are empty

Meg Carr (view profile)

on 8 Mar 2019
Latest activity Commented on by Walter Roberson

Walter Roberson (view profile)

on 13 Mar 2019
I have a 3D cell array 'A' of size 120 x 180 x 365 (latitude, longitude, day of year).
If I call up a single cell (e.g. A(1,1,1)), this opens matrix 'B' which has two columns (vessel identity, speed), but the number of rows varies by cell. Some cells do not contain any data and display [ ] instead of a B matrix.
I need to make one B matrix that displays all the vessel identities and speeds for A(1,1,1:365)
How can I vertically concatenate matrix B in the third dimension?

Jos (10584) (view profile)

on 8 Mar 2019

B = cat(1,A{1,1,1,:}) % N-by-2 array

Meg Carr

Meg Carr (view profile)

on 12 Mar 2019
I just verified, and A{1,1,1} results in a 1 x 18 cell array.
B = cat(1,A{1,1,1,:}), suggested by Jos, results in the same 1 x 18 cell array.
cat(1,A{1,1,:}) results in this error:
Error using cat
Dimensions of matrices being concatenated are not consistent.
Walter Roberson

Walter Roberson (view profile)

on 13 Mar 2019
You said that opening up a single element A(1,1,1) results in a B matrix with two columns. But A{1,1,1} is returning a 1 x 18 cell array. There is a contradiction here.
Walter Roberson

Walter Roberson (view profile)

on 13 Mar 2019
temp = A{1,1,1};
B = vertcat(temp{:});