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