繁体   English   中英

将单元格数组转换为字符串数组

[英]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]....

尝试像这样组合cellfunnum2str

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上使用num2str ,因此不必检查variable是字符串还是数字值。 请注意,结果中的空格位于元素之间,而不是元素本身中。 所以,

str(1)  
ans =    
    '1'    
str(2)    
ans =     
    '1A'

如果您的输入数据可能包含空格(您的样本中没有空格),则可以通过使用额外的cellfun来消除这些cellfun如下所示:

cellfun(@(c) c(c~=' '), str, 'UniformOutput', false) 

旁注:在大多数MATLAB函数中,您可以缩短参数名称,例如UniformOutput, false 只要字母代表一个唯一的参数且不能表示其他含义un, 0可以是un, 0uni, 0 ...等。 如果在命令窗口中编写它,这是一个很好的技巧,但我会避免在实际代码中使用它,因为如果MathWorks确定创建一个名为unitUniformInput或其他以uni开头的参数,它可能会破坏代码。 只是一点提示=)

有多种方法可以做到这一点。 我假设您引用的矩阵是单元格数组? 意味着它可以同时包含数字和字符串?

如果是这样,则可以遍历每个单元格元素并使用isa()确定每个元素中的对象类型,然后相应地转换为字符串(即num2str())。

如果您在使用空格时遇到麻烦,请研究使用与matlab中的regexpr()相关的函数系列,它们可以识别某些字符并执行一些操作,例如从char字符串中删除它们。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM