How to transform a cell array of cells in a matrix
Show older comments
Problem: I have a cell array and every cell of this array has an other cell that contains a string: I want to trasform the cell array in a matrix of strings. How can i do? I have tried to use cell2mat but matlab gives an error:
'Cannot support cell arrays containing cell arrays or objects.'
I have A, in the attached .mat file, which is a vector of strings, and I want to divide prefix to postfix. To do it I use this code :
for k=1:25
[matches(:,k), postfix(:,k)] = regexp(A,sprintf('%d%d(.*)',digits{1}(k),digits{2}(k)),'match','once','tokens');
end
This code creates postfix (attached matlab.mat). I want that postfix is a matrix, and I don't know how transform it.
1 Comment
Star Strider
on 30 Nov 2015
Edited: Star Strider
on 30 Nov 2015
The cell array in your ‘matlab.mat’ file seems to be 93% empty, and at least some of the non-empty cells contain only ''.
Answers (2)
Image Analyst
on 30 Nov 2015
Extract it first, then use cell2mat:
for k = 1 : length(ca)
thisCellContents = ca{k}; % thisCellContents is another cell - the cell inside this cell.
matrix = cell2mat(thisCellContents);
end
Adapt as needed, for example if it's a 2D array of cells or whatever.
3 Comments
ely may
on 30 Nov 2015
Image Analyst
on 30 Nov 2015
What did thisCellContents produce? Was there anything in it? Star Strider says your mat file is empty everywhere.
>> X = {{'A'},{'bb'};{'CCC'},{'d'}}
X =
{1x1 cell} {1x1 cell}
{1x1 cell} {1x1 cell}
>> Y = reshape([X{:}],size(X))
Y =
'A' 'bb'
'CCC' 'd'
6 Comments
ely may
on 30 Nov 2015
Your cell array is not how you have described it, because the cells contain many empty arrays. When you replace the empty arrays with cells of strings (thus matching your original description), then my code works without error:
>> postfix(cellfun(@isempty,postfix)) = {''};
>> Y = reshape([postfix{:}],size(postfix));
Image Analyst
on 1 Dec 2015
Seems doubtful since the size after reshaping is size(postfix) which is the same size as before reshaping.
ely, why are you not showing us your code??? What's the big secret? Don't you want to make it easy for use to help you, not hard? Or have you not read this link yet?
Image Analyst
on 1 Dec 2015
Well it was necessary because we can now see that your code doesn't look like Stephen's code. Sorry, I have to leave for work now and I don't have time now to fix your code.
Categories
Find more on Cell Arrays in Help Center and File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!