MATLAB: How to convert a cell array to matrix whose dimensions are not equal

cell arraydimension

mydata =
[195x1 double] [124x1 double] [1826x1 double] [2x1826 double] [195x124x1826 single]

Best Answer

%using variable names from your posting, structure as in capture.JPG
md1 = mydata{1};
md2 = mydata{2};
md3 = mydata{3};
md4 = mydata{4};
md5 = mydata{5};
[X, Y, Z] = ndgrid(md1, md2, md3);
pointsize = 20;
scatter3(X(:), Y(:), Z(:), pointsize, md5(:));
%using variable names from data file.JPG
%the data is a mix of int16 and int32 and we need to make it all the same datatype to
%make it into a numeric matrix without risk that the wrong datatype would be used
temp = cellfun(@(M) int32(M.'), permute(B,[1 3 2]), 'Uniform', 0);
B30 = cell2mat( arrayfun(@(R) horzcat(temp{R,:}), 'Uniform', 0) );
The result of this, B30, would be a 30 x 10666 numeric array, in which each row is formed by concatenating together the 2446 x 1, 2532 x 1, 2651 x 1, 3037 x 1 as one piece and making that a row.