Encapsulated cell array (cell in cell) converting to 2D-array

12 次查看(过去 30 天)
Hello,
I´m searching for an efficient method to convert an cell-in-cell array, e.g. 1000 x 1 Cell, each filled with 1 x 33 cell to 1000 x 33 Cell array. This is my code so far including undesired for-loops:
cell_array = regexp(text_data, '\;', 'split'); % splitting textfile with semikolon seperated data (1000 x 1) x (1 x 33)
for i=1:length(cell_array)
single_data = cell2mat([cell_array{i,1}(1,1), cell_array{i,1}(1,16), cell_array{i,1}(1,31), cell_array{i,1}(1,32)]); % just extracting 4 relevant values
data = [data; single_data]; % collect data
end
It works so far, but for datasets up to 10e6 it takes too much time.
Thanks for your help!

回答(1 个)

the cyclist
the cyclist 2019-8-26
编辑:the cyclist 2019-8-26
cellfun performs an operation on every cell in a cell array. This line is equivalent your for loop:
data = cellfun(@(x)cell2mat([x(1,1), x(1,16), x(1,31), x(1,32)]),cell_array,'unif',false);
I did not test it for speed.

类别

Help CenterFile Exchange 中查找有关 Cell Arrays 的更多信息

标签

产品

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by