Преобразуйте массив ячеек ячеек в массив ячеек строк в MATLAB

Используя regexp с маркерами на массиве ячеек строк у меня есть массив ячеек ячеек. Вот упрощенный пример:

S = {'string 1';'string 2';'string 3'};
res = regexp(S,'(\d)','tokens')
res = 

    {1x1 cell}
    {1x1 cell}
    {1x1 cell}
res{2}{1}
ans = 
    '2'

Я знаю, что у меня есть только одно соответствие на строку ячейки в S. Как я могу преобразовать этот вывод в массивы ячеек строк в векторизованной форме?

6
задан Bill the Lizard 12 April 2010 в 21:54
поделиться

1 ответ

Проблема еще хуже, чем вы думали. Выходные данные из REGEXP на самом деле есть массив ячеек массивов ячеек массивов ячеек строк! Да, три уровня! Ниже приведено использование CELLFUN, чтобы избавиться от двух верхних уровней: оставляя только массив строк ячеек:

cellArrayOfStrings = cellfun(@(c) c{1},res);

Однако вы также можете изменить вызов на REGEXP, чтобы избавиться от одного уровня, а затем использовать VERTCAT:

res = regexp(S,'(\d)','tokens','once');  %# Added the 'once' option
cellArrayOfStrings = vertcat(res{:});
12
ответ дан 9 December 2019 в 20:41
поделиться
Другие вопросы по тегам:

Похожие вопросы: