【发布时间】:2012-08-28 17:50:20
【问题描述】:
如何将[12 25 34 466 55] 转换为字符串数组['12' '25' '34' '466' '55']?我知道的转换函数将该数组转换为一个代表整个数组的字符串。
【问题讨论】:
标签: string matlab numbers type-conversion
如何将[12 25 34 466 55] 转换为字符串数组['12' '25' '34' '466' '55']?我知道的转换函数将该数组转换为一个代表整个数组的字符串。
【问题讨论】:
标签: string matlab numbers type-conversion
字符串数组必须是元胞数组。也就是说:
s = [12 25 34 466 55]
strtrim(cellstr(num2str(s'))')
【讨论】:
现在在 MATLAB 2016b 之后,您可以简单地使用
s = [12 25 34 466 55];
string(s)
【讨论】:
将arrayfun 与num2str 一起使用可以:
>> A = [12 25 34 466 55]
A =
12 25 34 466 55
>> arrayfun(@num2str, A, 'UniformOutput', false)
ans =
'12' '25' '34' '466' '55'
【讨论】:
arrayfun(@num2str, A, 'UniformOutput', false)?相同的概念,相同的输出,但您避免了“from-cell”和“to-cell”转换。
在 MATLAB 中,['12' '25' '34' '466' '55'] 与包含这些数字的单个字符串相同。也就是说:
['12' '25' '34' '466' '55']
ans =
12253446655
我需要更多上下文来了解您要完成的工作,但假设您仍然希望能够以字符串的形式访问每个单独的数字,那么元胞数组可能是您可以采用的最佳方法:
A = [1 2 3]
num2cell(num2str(A))
(当然,您仍然需要从 ans 中删除杂散空格)
【讨论】:
num2cell 和num2str 的顺序。 cellfun(@num2str,num2cell(s),'UniformOutput',false) 很好地完成了工作。
从 R2016b 开始还有 compose 功能:
>> A = [12 25 34 466 55]
A =
12 25 34 466 55
>> compose("%d", A)
ans =
1×5 string array
"12" "25" "34" "466" "55"'''
【讨论】: