元胞数组中的 Strsplit 并连接

Strsplit within cell array and concatenate

我有一个字符串元胞数组。它分为两列。第一列包含whitespace,我想根据whitespace拆分成多列。第二列有我要删除的换行符。

以下函数几乎可以满足我的需求:

col1 = arrayfun(@(r) [strsplit(allpacks{r,1})],1:rows,'Uni',0).';
col2 = arrayfun(@(r) regexprep(allpacks{r,2},'[\n\r\f]+',''),1:rows,'Uni',0).';
allpacks = [col1, col2];

col2 完美,正是我想要的。

然而,

col1 是一个(行 x 1)个单元格数组,每个单元格都是一个 1x21 的字符串单元格数组。我希望 col1 实际上是一个(行 x 21)字符串元胞数组。我觉得我真的很接近,但我没有尝试过。我怎样才能在这里得到我想要的东西?

根据评论,这是第 1 列中的一些示例数据:

  1 2015-09-03 08:02:15.067342000 0.000000000 0.000000000   172.24.2.2 -> 172.24.2.34  Modbus/TCP 64    query: trans: 12289; unit:  42, func:   4: Read Input Registers

我希望此字符串中的每个 "word" 都是元胞数组中它自己的列。请注意,有 20 个 "words" 但结果为 21,因为初始的 space 最终从 strsplit.

中获得了自己的列

下面应该做你想做的:

%// example data
rows = 5;
col1 = repmat({num2cell(1:26)},rows,1)
col2 = num2cell(1:rows).' %'

%// output
allpacks = [vertcat(col1{:}), col2];