Arrays 将单元格数组转换为字符串数组
我从Excel导入了一些信息,包括字符串和数字。我在MATLAB中以原始格式读取Excel文件 现在,我在一个大矩阵中有一列Arrays 将单元格数组转换为字符串数组,arrays,string,matlab,cell,Arrays,String,Matlab,Cell,我从Excel导入了一些信息,包括字符串和数字。我在MATLAB中以原始格式读取Excel文件 现在,我在一个大矩阵中有一列 [1] '1A' [2] [3] [4] [505] [601] [7] [8] 这就是xlsread命令给我的方式。我想把所有这些转换成字符串,比如 ['1'、'1A'、'2'等..] 我正在努力做到这一点。我希望每个元素中没有空格。我的意思是它不应该像['1'、'1A'、'2'等等]…有多种方法可以做到这一点。我假设你提到的矩阵是一个单元格数组?意
[1]
'1A'
[2]
[3]
[4]
[505]
[601]
[7]
[8]
这就是xlsread
命令给我的方式。我想把所有这些转换成字符串,比如
['1'、'1A'、'2'等..]
我正在努力做到这一点。我希望每个元素中没有空格。我的意思是它不应该像
['1'、'1A'、'2'等等]…
有多种方法可以做到这一点。我假设你提到的矩阵是一个单元格数组?意味着它可以同时包含数字和字符串
如果是这样,您可以循环遍历每个单元格元素,并使用isa()确定每个元素中的对象类型,然后相应地转换为字符串(即num2str()
如果在使用空格时遇到问题,请研究在matlab中使用与regexpr()相关的函数族,它们可以识别某些字符并执行诸如从字符字符串中删除这些字符之类的操作。尝试组合,如下所示:
A = {1, '1A', 2, 3, 4, 505, 601, 7, 8}'
str = cellfun(@(c) num2str(c), A, 'UniformOutput', false).'
str =
'1' '1A' '2' '3' '4' '505' '601' '7' '8'
cellfun(@(c) c(c~=' '), str, 'UniformOutput', false)
您可以在stings上使用num2str
,这样就不必检查变量是字符串还是数值。请注意,结果中的空格位于元素之间,而不是元素本身。所以
str(1)
ans =
'1'
str(2)
ans =
'1A'
如果您的输入数据可能包含空格(您的示例没有),您可以使用额外的cellfun
来消除这些空格,如下所示:
A = {1, '1A', 2, 3, 4, 505, 601, 7, 8}'
str = cellfun(@(c) num2str(c), A, 'UniformOutput', false).'
str =
'1' '1A' '2' '3' '4' '505' '601' '7' '8'
cellfun(@(c) c(c~=' '), str, 'UniformOutput', false)
旁注:在大多数MATLAB函数中,可以缩短参数名称,例如
UniformOutput、false
。这可以是un,0
,uni,0
。。。等等,只要字母代表一个唯一的参数,不能表示其他的东西。如果您在命令窗口中编写它,这是一个很好的技巧,但我会在实际代码中避免它,因为如果MathWorks决定创建一个名为unit
、UniformInput
的参数,或者其他以uni
开头的参数,它可能会破坏代码。只需一点提示()谢谢您的回复。。。我相信它被称为单元数组…正如你在问题中看到的,它包含字符串形式的字符和单元形式的数字。我尝试循环遍历每个元素,但我面临一个问题。问题是当我使用num2str时…输出实际上不是像num2str(2)=2这样的引号,而不是'2'由于这个原因,当我遇到像'1A'这样的字符串时,我无法将这两个字符串添加到同一个数组或矩阵中