2012-08-28 221 views

回答

26

字符串數組必須是單元格數組。這就是說:

s = [12 25 34 466 55] 
strtrim(cellstr(num2str(s'))') 
+0

一種更好的方式比我上面寫的。 – Vish

+0

這比arrayfun和cellfun快兩倍。 +1 – Doresoom

0

在MATLAB中,[ '12' '25' '34' '466' '55']是相同的含這些數字單個字符串。這就是說:

['12' '25' '34' '466' '55'] 

ans = 

12253446655 

我需要在這裏爲你正在嘗試什麼來完成,但假設你希望仍然能夠訪問每個個體數作爲一個字符串更多上下文,單元陣列可能是最好的辦法你可以採取:

A = [1 2 3] 
num2cell(num2str(A)) 

(當然,你仍然必須移除俺們雜散空格)

+0

即使您刪除了雜散空格,您最終也會得到一個單獨的字符串數組,其中包含每個數字。改爲交換'num2cell'和'num2str'的​​順序。 'cellfun(@ num2str,num2cell(s),'UniformOutput',false)'很好地完成了工作。 – Doresoom

10

num2str一起使用arrayfun將工作:

>> A = [12 25 34 466 55] 
A = 
    12 25 34 466 55 

>> arrayfun(@num2str, A, 'UniformOutput', false) 
ans = 
    '12' '25' '34' '466' '55' 
+1

爲什麼'arrayfun(@ num2str,A,'UniformOutput',false)'?相同的概念,相同的輸出,但您避免了「從單元」和「到單元」的轉換。 – gevang

+0

@gevang:+1。好點子。我已經更新了答案。 – Kavka

7

現在MATLAB 2016B後,你可以簡單地使用

s = [12 25 34 466 55]; 
string(s)