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

m_p*_*wer 3 arrays matlab cell-array

我怎么能用越来越多的数字初始化一个单元格数组?对于一个简单的数组,我可以做如下:

A = [1:0.0001:1.1]
Run Code Online (Sandbox Code Playgroud)

什么是单元格数组的等价物?我怎么能得到:

A = {'1', '1.0001', '1.0002', '1.0003', '1.0004', ...}
Run Code Online (Sandbox Code Playgroud)

编辑:

这是我到目前为止所尝试的:

cellfun(@(x) num2str(str2double(x)+0.0001), repmat({'1'},1,21), 'UniformOutput', false)
Run Code Online (Sandbox Code Playgroud)

但是,这给出了:

{'1.0001', '1.0001', '1.0001',...}
Run Code Online (Sandbox Code Playgroud)

cha*_*pjc 7

有一个很酷的未记录的函数调用sprintfc打印到单元格数组:

An = 1:0.0001:1.1;
As = sprintfc('%g',An)
Run Code Online (Sandbox Code Playgroud)

例:

>> A = sprintfc('%g',0:0.2:1)
A = 
    '0'    '0.2'    '0.4'    '0.6'    '0.8'    '1'
>> which sprintfc
built-in (undocumented)
Run Code Online (Sandbox Code Playgroud)

sprintfc最近在undocumentedmatlab.com上突出显示.Yair Altman的另一个伟大发现.其他一些可能性如下.


对于数值,请使用num2cell:

A = num2cell(An)
Run Code Online (Sandbox Code Playgroud)

对于字符串表示:

A = strsplit(num2str(An))
Run Code Online (Sandbox Code Playgroud)

你也可以使用cellfun:

A = cellfun(@num2str,num2cell(An),'uni',0)
Run Code Online (Sandbox Code Playgroud)

或者只是arrayfun,这实际上更简单:

A = arrayfun(@num2str,An,'uni',false)
Run Code Online (Sandbox Code Playgroud)