2010-06-04 21 views
8

如何有效地構建包含數字的字符串的單元數組(在我的具體情況下,圖例的標籤的單元數組)。如何構建包含數字的字符串的單元陣列

如:{'series 1', 'series 2', 'series 3'}

我沿着

sprintf('series %i', {1:10}) 

但顯然sprintf和電池陣列不玩好起來的線嘗試的事情。

類似這樣的工作,如果我只想要的數字,但不工作,如果我想要的文字以及。

cellstr(int2str([1:10]')) 

很明顯,它可以在一個循環中完成,但必須有這樣的一個聰明的單行路。

回答

6

功能INT2STRSTRCAT達到目的:

>> cellArray = strcat({'series '},int2str((1:3).')).' 

cellArray = 

    'series 1' 'series 2' 'series 3' 
3

稍微不同的方式:

cellArray = cellstr(num2str((1:3)', 'series %d')) 

或替代地

cellArray = strcat(num2str((1:3)', 'series %d'), {}) 

其結果:

cellArray = 
    'series 1' 
    'series 2' 
    'series 3' 
3

您可以使用一個班輪下面的更復雜的輸出:

cellarray = arrayfun(@(x) {sprintf('item %d of 3', x)}, 1:3) 

cellarray = 

    'item 1 of 3' 'item 2 of 3' 'item 3 of 3' 
+0

是的!這個!您解決了我的問題,其他解決方案不適用於更多涉及的輸出。我最初做了一個循環,在用作legend()的輸入時不工作:for ii = 1:n; cellArray {ii} = {sptrinf('n%d,val%0.2f',ii,vals(ii) )};結束 – Leo 2014-09-25 14:06:38

12

我知道這是連續4年,但我碰到這是用來做完全無證功能sprintfc來到你想要什麼:

CellArray = sprintfc('series %i',1:3); 

CellArray = 

    'series 1' 'series 2' 'series 3' 

好吧......對於我猜測的人可能會有用。

+2

非常有用 - 謝謝。 – Flyto 2014-10-21 11:04:18

+0

太棒了!很高興有人發現這篇文章:) – 2014-10-21 12:40:26

相關問題