如何构建包含数字的字符串的单元格数组

时间:2010-06-04 18:38:11

标签: string matlab

您如何有效地构建包含数字的字符串的单元格数组(在我的特定情况下,是图例的标签的单元格数组)。

例如:{'series 1', 'series 2', 'series 3'}

我已尝试过

的方法
sprintf('series %i', {1:10})

但显然sprintf和单元阵列并不能很好地协同工作。

如果我只想要这个数字,那么这样的东西就有用了,但如果我想要文本也不行。

cellstr(int2str([1:10]'))

显然,它可以在一个循环中完成,但必须有一个聪明的单行方式来做到这一点。

4 个答案:

答案 0 :(得分:12)

我知道它已经4年了,但我遇到了无证的函数sprintfc,它用来做你想要的事情:

CellArray = sprintfc('series %i',1:3);

CellArray = 

    'series 1'    'series 2'    'series 3'
好吧......对我猜的人来说可能有用。

答案 1 :(得分:6)

函数INT2STRSTRCAT可以解决问题:

>> 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'