Matlab 如何处理具有不同分隔符数的单元格数组

Matlab 如何处理具有不同分隔符数的单元格数组,matlab,Matlab,使用拆分时出错 文本的元素5包含4个分隔符,而前面的元素有5个分隔符。所有元素必须包含相同数量的分隔符 '15:54:58.882',tscompute1',524288',字节,“英特尔” “15:54:58.882”,tscompute1,“294912”,字节,“英特尔rdt” “15:54:58.882”,tscompute1,“786432”,字节,“英特尔rdt” “15:54:58.882”,tscompute1,“491520”,字节,“英特尔rdt” “15:54:58.882

使用拆分时出错

文本的元素5包含4个分隔符,而前面的元素有5个分隔符。所有元素必须包含相同数量的分隔符

'15:54:58.882',tscompute1',524288',字节,“英特尔”
“15:54:58.882”,tscompute1,“294912”,字节,“英特尔rdt”
“15:54:58.882”,tscompute1,“786432”,字节,“英特尔rdt”
“15:54:58.882”,tscompute1,“491520”,字节,“英特尔rdt”
“15:54:58.882”,tscompute1,0,字节,“英特尔rdt”
“15:54:58.882”,tscompute1,0,字节,“英特尔rdt”
在使用split()函数拆分具有不同分隔符数的字符串单元格数组时,出现了如上所述的错误。提供了一个示例数据。

您的问题是(我假设)
s4
是您的单元格,因此您需要头韵地访问
s4
中的每个字符串(使用大括号
{}

split
的MATLAB参考文档。要了解更多有关单元如何工作的信息,请阅读MATLAB文档页面

但是,如果您的单元是Mx1,您所需要做的就是将单元转换为1xM,以便将其完全加载到
split

s4 = tranpose(s4);
str = split(s4, ",");

根据您引用的文档,
split
可以将单元格数组作为输入。非常抱歉。你说得对。但是,您仍然可以使用上面的方法迭代每个单元格值以获取字符串……我认为这更像是一个“regexp”问题,Yogesh希望避免为这个灰色逗号拆分字符串:“15:54:58.882”,tscompute1,“491
520”,bytes,“intel\u rdt”“@obchardon是的,这就是我想要的。你的数据来自哪里?如果它是一个文件,那么您应该使用
readtable
读取它,它将自动为您处理拆分。您会发现第三列不是字符的数字,但您可以自己转换(无论如何,您都需要使用上述方法进行此操作。数据从系统活动收集并存储在弹性搜索数据库中。此外,readtable无法工作,因为数据位于csv文件中。如果您以前可以尝试解决此问题,则您的数据格式很差。但如果不是您的数据,则可以使用regexp拆分:
B=regexp(string(s4),,(?!\d{2}),'split')
@obchardon数据格式不在我手中。我希望能事先格式化。不过,我会试试你的建议。@Yogesh,
readtable
对于
csv
文件来说效果非常好。
str = [];
for i = 1:length(s4)
    str = [str; split(s4{i}, ",")];
end
s4 = tranpose(s4);
str = split(s4, ",");