Matlab- разделить столбец массива ячеек по разделителю

У меня есть много ячеек 33213168x1, где каждая ячейка содержит столбец 85 x 1.

Каждая ячейка в столбце имеет вид

[0.55;0.25;0.75]

[0.33;0.66;0.99]

Я хочу разделить этот столбец с помощью разделителя точки с запятой, чтобы каждая ячейка в массиве ячеек была размером 85x3, например:

[0.55][0.25][0.75]

[0.33][0.66][0.99]

Я пробовал множество методов, чтобы решить эту проблему, но чаще всего получаю ошибки "элементы ячеек должны быть символьными массивами" или "входные данные должны быть строкой".

Некоторые из подходов, которые я попробовал:

splitcells = strsplit(regress_original_053108,';');
splitcells = cellfun(@(x) strsplit(regress_original_053108, ';'),regress_original_053108 , 'UniformOutput',0);
splitcells = regexp(regress_original_053108, ';', 'split');
splitcells = textscan(regress_original_053108, 'delimiter', ';');

И т.д. Любые отзывы о том, как это сделать, будут оценены.

2 ответа

Решение

Надеюсь, что это решит вашу проблему:

% Example input
input = {[0.55;0.25;0.75]};
cellArray(1:85,1) = input;

% Create array
doubleArray = zeros(85,3);

% Fill array
for i=1:85
   doubleArray(i,:) =  cellArray{i,1}';
end

Каждая ваша ячейка не является строкой, поэтому вы не можете использовать strsplit, Используйте этот подход:

for ii = length(X) % Here X denotes your 33213168x1 cell array
    X{ii} = cell2mat(cellfun(@(y) y.', X{ii}, 'UniformOutput', false));
end
Другие вопросы по тегам