如何使用不断增加的数字初始化单元格数组

时间:2013-12-12 18:40:25

标签: arrays matlab cell-array

如何用越来越多的数字初始化单元格数组?对于一个简单的数组,我可以这样做:

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',...}

1 个答案:

答案 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)