MATLAB: How to use cell2mat for specific elements of cell array

cell2mat

Hi everyone,
I am trying to create a double from specific elements of a cell array. If I have a cell array B, of dimensions 6×5, of which each element contains a double 10×4, such as:
for i = 1 : 6
for j = 1 : 5
A = randn(10,4)
B{i,j} = A;
end
end
I would like to create a big double out of all the rows and first 3 columns of B, and the second and third column of each interior double A (on this 6×3 cell array). Hence, the expected double C that should be a 60×6 matrix. I am using
C = cell2mat(B{:,1:3}(:,[2,3]));
But I get an error. What am I missing here?

Best Answer

C = cell2mat(B(:,1:3));
C = C(:,2:3);
"What am I missing here?"
Several things: firstly, that the B{...} syntax creates a comma-separated list from the contents of the cell array, which in general is not a valid input for cell2mat:
Secondly, that in MATLAB indexing cannot be arbitrarily added on to the end of any other expression, so you will need to use a temporary variable.