Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/string/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/matlab/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
String 如何构建包含数字的字符串的单元格数组_String_Matlab - Fatal编程技术网

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

String 如何构建包含数字的字符串的单元格数组,string,matlab,String,Matlab,如何高效地构建包含数字的字符串单元格数组(在我的特殊情况下,是图例标签的单元格数组) 例如:{'series 1'、'series 2'、'series 3'} 我试过类似的方法 sprintf('series %i', {1:10}) 但是很明显sprintf和细胞阵列在一起玩得不好 如果我只想要数字,这种方法就行,但如果我想要文本,这种方法就行不通 cellstr(int2str([1:10]')) 显然,它可以在一个循环中完成,但必须有一种巧妙的单行方式来完成。函数和技巧: >&

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

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

我试过类似的方法

sprintf('series %i', {1:10})
但是很明显sprintf和细胞阵列在一起玩得不好

如果我只想要数字,这种方法就行,但如果我想要文本,这种方法就行不通

cellstr(int2str([1:10]'))
显然,它可以在一个循环中完成,但必须有一种巧妙的单行方式来完成。

函数和技巧:

>> cellArray = strcat({'series '},int2str((1:3).')).'

cellArray = 

    'series 1'    'series 2'    'series 3'

稍微不同的方式:

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

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

cellArray = 
    'series 1'
    'series 2'
    'series 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'

我知道已经4年了,但我遇到了一个未记录的函数,它可以完全满足您的需求:

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

CellArray = 

    'series 1'    'series 2'    'series 3'

嗯。。。我想这可能对某些人有用。

是的!这你解决了我的问题,其他解决方案不适用于更复杂的输出。我最初创建了一个循环,当用作legend()的输入时,该循环不起作用:对于ii=1:n;射线{ii}={sptrinf('n%d,val%0.2f',ii,vals(ii))};太好了!很高兴有人发现了这个帖子:)