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

30

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

5个回答

32

字符串数组必须是一个单元格数组。

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

比我上面写的更好的方法。 - Vish
这比arrayfun和cellfun快两倍以上。+1 - Doresoom

13

现在在MATLAB 2016b之后,你可以简单地使用

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

12

可以使用arrayfunnum2str一起来实现:

>> 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)呢?同样的概念、同样的输出,但可以避免"from-cell"和"to-cell"的转换。 - gevang

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

ans =

12253446655

我需要更多的上下文信息来了解你要实现什么,但是假设你想要仍然能够将每个单独的数字作为字符串进行访问,那么使用一个单元数组可能是你可以采取的最佳方法:

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

(当然,您仍然需要从答案中删除杂散的空格)

即使您删除了多余的空格,最终仍会得到一个包含每个数字的单独字符串的单元数组。请交换 num2cellnum2str 的顺序。使用 cellfun(@num2str,num2cell(s),'UniformOutput',false) 可以很好地完成工作。 - Doresoom

0

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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接