将字符串转换为单元格矩阵

时间:2014-04-14 23:26:06

标签: regex string matlab text-processing cell-array

在MATLAB中,我有一个字符串,格式如下,

str = 'var1,var2\nvar1,var2,var3\n,var9\n'\n\n,var12,var13,var14,v15;

我想将其转换为单元格矩阵,其中每个逗号,分隔列中的不同项,每个\n代表一个新行。每个值可以是字符串或双精度。

可以有空行和许多空值。最大的行可以是任何行。

我知道我可以循环拆分字符串并循环通过它添加到单元格矩阵中,但是有更有效的方法吗?如何有效地将上述字符串转换为单元格矩阵。

1 个答案:

答案 0 :(得分:3)

您可以使用strsplit和/或regexp来获取单个单元格中的row,col元素:

>> strsplit(str,'\\n')
ans = 
    'var1,var2'    'var1,var2,var3'    ',var9'    ',var12,var13,var14,v15'
>> tab = regexp(strsplit(str,'\\n'),',','split');
>> tab{:}
ans = 
    'var1'    'var2'
ans = 
    'var1'    'var2'    'var3'
ans = 
    ''    'var9'
ans = 
    ''    'var12'    'var13'    'var14'    'v15'

然后你可以访问像:

这样的单元格
>> tab{2}{3}
ans =
var3

这不是一个真正的2D细胞,但它可能有助于达到目的。