MATLAB Answers

Meg Carr

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

Asked by Meg Carr
on 8 Mar 2019
Latest activity Commented on by Walter Roberson
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?
Thank you for your help.


Sign in to comment.

1 Answer

Answer by Jos (10584)
on 8 Mar 2019

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


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.
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.

Sign in to comment.