2012-08-28 216 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)