pac
pac

Reputation: 291

display all elements in a nested cell array (with character entries)

I have the following:

a = 

{1x1 cell}    {1x1 cell}    {1x1 cell}    {1x1 cell} 

where:

a{:}

ans = 

'a'


ans = 

'a'


ans = 

'c'


ans = 

'a'

I want to have the characters: a a c a

Since I need the characters to print using fprintf

fprintf won't accept a{:}

If I do a{1}{:} will consider only the first character a

How to fix this? Thanks.

Upvotes: 0

Views: 1582

Answers (1)

nrz
nrz

Reputation: 10570

If you only need the character vector 'aaca', you can use this:

a = {{'a'}, {'a'}, {'c'}, {'a'}};

a_CharVector = cellfun(@(x) char(x), a);

If you want the character vector 'a a c a ', you can use regexprep to add the spaces:

a_CharVectorWithSpaces = regexprep((cellfun(@(x) char(x), a)), '(.)', '$1 ');

To print a a c a with spaces and newline you can use this:

fprintf([ regexprep((cellfun(@(x) char(x), a)), '(.)', '$1 '), '\n' ]);

Edit: unnecessary anonymous function removed. @(x) is unnecessary in this case.

To get character vector 'aaca' this works:

a_CharVector = cellfun(@char, a);

And to get character vector 'a a c a ' you can use this:

a_CharVectorWithSpaces = regexprep((cellfun(@char, a)), '(.)', '$1 ');

To printf a a c a with newline:

fprintf([ regexprep((cellfun(@char, a)), '(.)', '$1 '), '\n' ]);

Upvotes: 2

Related Questions