如何用越来越多的数字初始化单元格数组?对于一个简单的数组,我可以这样做:
A = [1:0.0001:1.1]
单元格数组的等价物是什么?我怎么能得到:
A = {'1', '1.0001', '1.0002', '1.0003', '1.0004', ...}
修改
这是我到目前为止所尝试的内容:
cellfun(@(x) num2str(str2double(x)+0.0001), repmat({'1'},1,21), 'UniformOutput', false)
然而,这给出了:
{'1.0001', '1.0001', '1.0001',...}
答案 0 :(得分:7)
有一个很酷的未记录的函数,名为sprintfc
,可以打印到单元格数组:
An = 1:0.0001:1.1;
As = sprintfc('%g',An)
示例:
>> A = sprintfc('%g',0:0.2:1)
A =
'0' '0.2' '0.4' '0.6' '0.8' '1'
>> which sprintfc
built-in (undocumented)
sprintfc
最近在undocumentedmatlab.com上突出显示。 Yair Altman的另一个伟大发现。其他一些可能性如下。
对于数值,请使用num2cell
:
A = num2cell(An)
对于字符串表示:
A = strsplit(num2str(An))
您也可以使用cellfun
:
A = cellfun(@num2str,num2cell(An),'uni',0)
或只是arrayfun
,这实际上更简单:
A = arrayfun(@num2str,An,'uni',false)