Merge cell arrays in a loop

2 views (last 30 days)
Veilchen1900
Veilchen1900 on 15 Aug 2017
Commented: Veilchen1900 on 16 Aug 2017
Hi, I'm loading cell arrays from a folder and want them to combine into one cell array. This should happen in a loop. The folders contain different number of cell arrays. The command to merge cell arrays is C4 = [C1; C2; C3] but how can I use it im my code?
Thanks a lot in advance!
if
% Select input folder
d = uigetdir('M:\P\','Select Input-folder');
% Change current folder
cd(d);
% List all .mat files.
list = dir('*.mat');
l = length(list);
for k = 1: length(list)
% Load .mat files.
load(list(k).name);
end

Accepted Answer

Stephen23
Stephen23 on 15 Aug 2017
Edited: Stephen23 on 16 Aug 2017
The trick is to load each .mat file into a structure, which you can then access the fields of:
C = cell(1,numel(list);
for k = 1:numel(list)
S = load(list(k).name);
C{k} = S.field;
end
And avoid slow ugly code that creates or accesses lots of numbered variables: https://www.mathworks.com/matlabcentral/answers/304528-tutorial-why-variables-should-not-be-named-dynamically-eval

More Answers (0)

Categories

Find more on Structures in Help Center and File Exchange

Community Treasure Hunt

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

Start Hunting!