2013-12-12 25 views
3

如何用數量遞增來初始化單元陣列?對於一個簡單的陣列,我可以做如下:如何使用遞增的數字初始化單元陣列

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

回答

7

有一個cool 無證功能c alled 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) 
+0

我似乎不具備的功能'strsplit'在R2010a版本 –

+0

@m_power我只記得有一個叫'sprintfc'無證功能是完美的人選。 – chappjc

+1

這完美的作品! –