How to convert the contents of a cell array into an array?

1 view (last 30 days)
Hi, I have a cell array that looks a bit like this:
N='AA' 'AA_BB' 'AA_BB_CC' 'AA_BB_DD' 'AA_BB_EE'
it is easy enough to convert a specific entry of my cell into an array:
a=cell2mat(N(2)) a=AA_BB
Now I want to use the cellfun code in order to generate an array for all the entries in my cell. The end result I am envisioning looks a bit like:
a=AA AA_BB AA_BB_CC AA_BB_DD AA_BB_EE
I am trying the following code:
a=cellfun(cell2mat,N)
but I am getting an error message. Where am I going wrong? Thanks
  2 Comments
Jan
Jan on 10 Sep 2013
Edited: Jan on 10 Sep 2013
If you have a cell array, post the code for a cell array also:
N = {'AA', 'AA_BB', 'AA_BB_CC', 'AA_BB_DD', 'AA_BB_EE'};
When you get an error message, post a complete copy in the forum. It is much easier to solve a problem than to guess, what the problem is.
Sven
Sven on 10 Sep 2013
sure, sorry for not having posted it earlier...the error message I get looks as follows:
K>> a=cellfun(@cell2mat,N) Cell contents reference from a non-cell array object.
Error in cell2mat (line 43) cellclass = class(c{1});

Sign in to comment.

Answers (1)

Jan
Jan on 10 Sep 2013
Edited: Jan on 10 Sep 2013
This is not a job for cellfun. And if it is one, a function handle would be required: cellfun(@cell2mat, ...) .
N = {'AA', 'AA_BB', 'AA_BB_CC', 'AA_BB_DD', 'AA_BB_EE'};
a = sprintf('%s ', N{:}); % Has a trailing space
% Or:
b = cat(2, N{:}); % No intermediate spaces
% Or:
c = CStr2String(N, ' ', 0);
with FEX: CStr2String, which inserts the separator between all strings except for the last string.
  5 Comments
Sven
Sven on 11 Sep 2013
hmmm....while the example works fine for x=2, it gives me an error message if I use x=3 or any other higher value...Any idea what the problem might be?
cellfun(@(ii) ii(1:3),N,'un',0)
Index exceeds matrix dimensions.
Error in @(ii)ii(1:3)

Sign in to comment.

Products

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!