How do I build a cell array of strings?

151 ビュー (過去 30 日間)
Jim 2013 年 3 月 27 日
編集済み: Randy Souza 2013 年 10 月 29 日
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?


Todd 2013 年 3 月 27 日
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 =
>> 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' ...
legends =
'first' 'second' 'third'

その他の回答 (0 件)

Community Treasure Hunt

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

Start Hunting!

Translated by