Matlab-通过分隔符拆分单元阵列

时间:2017-11-14 10:27:38

标签: arrays matlab split delimiter cell-array

我有许多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 个答案:

答案 0 :(得分:1)

希望这可以解决您的问题:

% 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

答案 1 :(得分:0)

您拥有的每个单元格都不是字符串,因此您无法使用strsplit。使用这种方法:

for ii = length(X) % Here X denotes your 33213168x1 cell array
    X{ii} = cell2mat(cellfun(@(y) y.', X{ii}, 'UniformOutput', false));
end