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))};太好了!很高兴有人发现了这个帖子:)