您如何有效地构建包含数字的字符串的单元格数组(在我的特定情况下,是图例的标签的单元格数组)。
例如:{'series 1', 'series 2', 'series 3'}
我已尝试过
的方法sprintf('series %i', {1:10})
但显然sprintf和单元阵列并不能很好地协同工作。
如果我只想要这个数字,那么这样的东西就有用了,但如果我想要文本也不行。
cellstr(int2str([1:10]'))
显然,它可以在一个循环中完成,但必须有一个聪明的单行方式来做到这一点。
答案 0 :(得分:12)
我知道它已经4年了,但我遇到了无证的函数sprintfc,它用来做你想要的事情:
CellArray = sprintfc('series %i',1:3);
CellArray =
'series 1' 'series 2' 'series 3'
好吧......对我猜的人来说可能有用。
答案 1 :(得分:6)
>> cellArray = strcat({'series '},int2str((1:3).')).'
cellArray =
'series 1' 'series 2' 'series 3'
答案 2 :(得分:3)
略有不同的方式:
cellArray = cellstr( num2str((1:3)', 'series %d') )
或者
cellArray = strcat( num2str((1:3)', 'series %d'), {} )
结果:
cellArray =
'series 1'
'series 2'
'series 3'
答案 3 :(得分:3)
您可以使用下面的单行输出更复杂的输出:
cellarray = arrayfun(@(x) {sprintf('item %d of 3', x)}, 1:3)
cellarray =
'item 1 of 3' 'item 2 of 3' 'item 3 of 3'