代码之家  ›  专栏  ›  技术社区  ›  Kena

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

  •  8
  • Kena  · 技术社区  · 14 年前

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

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

    我一直在尝试

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

    但显然,sprintf和细胞阵列不能很好地协同工作。

    如果我只想要数字,这种方法是可行的,但是如果我也想要文本,这种方法是行不通的。

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

    显然,它可以在一个循环中完成,但必须有一种巧妙的单行方式来完成这一任务。

    4 回复  |  直到 10 年前
        1
  •  6
  •   gnovice    14 年前

    功能 INT2STR STRCAT 诀窍:

    >> cellArray = strcat({'series '},int2str((1:3).')).'
    
    cellArray = 
    
        'series 1'    'series 2'    'series 3'
    
        2
  •  12
  •   Benoit_11    10 年前

    我知道已经4年了,但我遇到了一个没有记录的功能 sprintfc 它用于完全满足您的需要:

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

    好。。。我想这可能对某人有用。

        3
  •  3
  •   Amro    14 年前

    稍微不同的方式:

    cellArray = cellstr( num2str((1:3)', 'series %d') )
    

    或者

    cellArray = strcat( num2str((1:3)', 'series %d'), {} )
    

    结果是:

    cellArray = 
        'series 1'
        'series 2'
        'series 3'
    
        4
  •  3
  •   ankostis    12 年前

    您可以使用下面的一行程序进行更复杂的输出:

    cellarray = arrayfun(@(x) {sprintf('item %d of 3', x)}, 1:3)
    
    cellarray = 
    
        'item 1 of 3'    'item 2 of 3'    'item 3 of 3'