将元胞数组转换为字符串数组
Convert cell array to array of strings
我从 Excel 导入了一些信息,既有字符串也有数字。我在 MATLAB 中以原始格式阅读 Excel 文件
现在,我在一个大矩阵中有一列
[1]
'1A'
[2]
[3]
[4]
[505]
[601]
[7]
[8]
这就是 xlsread
命令给我的方式。我想将所有这些转换成字符串
['1' , '1A', '2' and so on..]
.
我正在努力做到这一点。我希望每个元素中都没有空格。我的意思是它不应该像 [ ' 1', ' 1A', ' 2' and so on]....
有多种方法可以做到这一点。我假设你提到的矩阵是一个单元格数组?意味着它可以同时包含数字和字符串?
如果是这样,您可以遍历每个单元格元素并使用 isa() 确定每个元素中的对象类型,然后相应地转换为字符串(即 num2str())。
如果您运行遇到空格问题,请研究使用 matlab 中与 regexpr() 相关的函数系列,它们可以识别某些字符并执行操作,例如从 char 字符串中删除它们。
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'
您可以在字符串上使用 num2str
,这样您就不必检查变量是字符串还是数值。请注意,结果中的空格位于元素之间,而不是元素本身。所以,
str(1)
ans =
'1'
str(2)
ans =
'1A'
如果您的输入数据可能包含空格(您的样本没有),您可以使用额外的 cellfun
来消除这些空格:
cellfun(@(c) c(c~=' '), str, 'UniformOutput', false)
旁注:在大多数 MATLAB 函数中,您可以缩短参数名称,例如 UniformOutput, false
。这可以是 un, 0
、uni, 0
... 等,只要这些字母代表一个唯一的参数并且不能表示其他含义。如果你在命令 window 中编写它,这是一个很好的技巧,但我会在实际代码中避免它,因为如果 MathWorks 决定创建一个名为 unit
的参数,它可能会破坏代码,UniformInput
或其他以 uni
开头的东西。一点小费=)
我从 Excel 导入了一些信息,既有字符串也有数字。我在 MATLAB 中以原始格式阅读 Excel 文件
现在,我在一个大矩阵中有一列
[1]
'1A'
[2]
[3]
[4]
[505]
[601]
[7]
[8]
这就是 xlsread
命令给我的方式。我想将所有这些转换成字符串
['1' , '1A', '2' and so on..]
.
我正在努力做到这一点。我希望每个元素中都没有空格。我的意思是它不应该像 [ ' 1', ' 1A', ' 2' and so on]....
有多种方法可以做到这一点。我假设你提到的矩阵是一个单元格数组?意味着它可以同时包含数字和字符串?
如果是这样,您可以遍历每个单元格元素并使用 isa() 确定每个元素中的对象类型,然后相应地转换为字符串(即 num2str())。
如果您运行遇到空格问题,请研究使用 matlab 中与 regexpr() 相关的函数系列,它们可以识别某些字符并执行操作,例如从 char 字符串中删除它们。
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'
您可以在字符串上使用 num2str
,这样您就不必检查变量是字符串还是数值。请注意,结果中的空格位于元素之间,而不是元素本身。所以,
str(1)
ans =
'1'
str(2)
ans =
'1A'
如果您的输入数据可能包含空格(您的样本没有),您可以使用额外的 cellfun
来消除这些空格:
cellfun(@(c) c(c~=' '), str, 'UniformOutput', false)
旁注:在大多数 MATLAB 函数中,您可以缩短参数名称,例如 UniformOutput, false
。这可以是 un, 0
、uni, 0
... 等,只要这些字母代表一个唯一的参数并且不能表示其他含义。如果你在命令 window 中编写它,这是一个很好的技巧,但我会在实际代码中避免它,因为如果 MathWorks 决定创建一个名为 unit
的参数,它可能会破坏代码,UniformInput
或其他以 uni
开头的东西。一点小费=)