String Matlab:将数字数组转换为字符串数组

String Matlab:将数字数组转换为字符串数组,string,matlab,numbers,type-conversion,String,Matlab,Numbers,Type Conversion,如何将[12 25 34 466 55]转换为字符串数组['12''25''34''466''55']?我知道的转换函数将该数组转换为一个表示整个数组的字符串。字符串数组必须是单元格数组。也就是说: s = [12 25 34 466 55] strtrim(cellstr(num2str(s'))') 在MATLAB中,['12''25''34''466''55']与包含这些数字的单个字符串相同。也就是说: ['12' '25' '34' '466' '55'] ans = 122534

如何将
[12 25 34 466 55]
转换为字符串数组
['12''25''34''466''55']
?我知道的转换函数将该数组转换为一个表示整个数组的字符串。

字符串数组必须是单元格数组。也就是说:

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

在MATLAB中,['12''25''34''466''55']与包含这些数字的单个字符串相同。也就是说:

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

ans =

12253446655
我需要更多的上下文来说明您要实现的目标,但假设您仍然希望能够以字符串的形式访问每个数字,那么单元格数组可能是您可以采取的最佳方法:

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

(当然,您仍然需要从ans中删除多余的空格)

使用
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'

现在在Matlab2016b之后,您可以简单地使用

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

从R2016b开始,还有合成功能:

>> 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"'''

这是一个比我上面写的更好的方法,比arrayfun和cellfun快两倍多+为什么不
arrayfun(@num2str,A'UniformOutput',false)
?相同的概念,相同的输出,但您避免了“从单元格”和“到单元格”的转换。即使删除了多余的空格,您最终也会得到一个字符串单元格数组,其中分别包含每个数字。交换
num2cell
num2str
的顺序<代码>cellfun(@num2str,num2cell,'UniformOutput',false)很好地完成了任务。