How do I build a cell array of strings?

99 visualizzazioni (ultimi 30 giorni)
Jim
Jim il 27 Mar 2013
Modificato: Randy Souza il 29 Ott 2013
I am trying to build a cell array of strings that can be used as legend text in a plot. A simplified version of what I am trying to do is as follows:
legends = '';
legends = 'this';
legends = {legends; 'this other one'};
legends = {legends; 'this here one here'};
legends = {legends; 'and this other one'};
legend(legends, 'Location', 'SouthOutside');
However, I receive the following error on the legend command:
Cell array argument must be a cell array of strings.
I thought {} were used to generate a cell array of strings. Why is this not working?

Risposta accettata

Todd
Todd il 27 Mar 2013
Hi Jim,
Remember that cell arrays can hold arbitrary data (including other cell arrays) and that while [] is concatenate, {} is "build a cell array". From the documentation about {}:
"Braces are used to form cell arrays. They are similar to brackets [ ] except that nesting levels are preserved."
Therefore, after your fourth assignment to legends, you actually have a cell array containing two elements, a cell array and a string.
Instead, consider using:
>> legends = {'first'}
legends =
'first'
>> legends(end+1) = {'second'}
legends =
'first' 'second'
>> legends(end+1) = {'third'}
legends =
'first' 'second' 'third'
Even better yet, if you know all the strings ahead of time, generate it all at once such as:
legends = {'first' ...
'second' ...
'third'}
legends =
'first' 'second' 'third'
todd

Più risposte (0)

Community Treasure Hunt

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

Start Hunting!

Translated by