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)
有一个很酷的未记录的函数调用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)
| 归档时间: |
|
| 查看次数: |
1538 次 |
| 最近记录: |