Filter löschen
Filter löschen

Vectorizing Table in Structure without Loop

3 Ansichten (letzte 30 Tage)
Gabor
Gabor am 26 Apr. 2021
Kommentiert: Gabor am 27 Apr. 2021
Hi,
I created this short code to explain my question:
for i=1:10
dynamic_field_name=string(cell_w_strings(i, 1)); %%% for eg.: "T1", "T2"
Table=Structure.(dynamic_field_name); %%% for eg.: Structure.T1 is a table
Date_v=Table.Date_column;
or in other words
Date_v{i}=Structure.T1.Date_column;
...
Date_v{i}=Structure.T2.Date_column;
end
I would like to vectorize this with no loop, something like with structfun cellfun or however it is possible:
Date_v{1}=Structure.T1.Date_column;
Date_v{2}=Structure.T2.Date_column;
...
Date_v{:}=Structure.(dynamic_structure_name(:)).Date_columns;
or
Date_v{:}=Structure.Cell{:}.Date_columns;
I understand that this might not be possible with dynamic field names in structure
But since I can change the dynamic field to a cell array than that is not the main point I am trying to ask.
The main question is how I can iterate through the tables in all structure fields to get the Date columns out and use them as vectors in an array
I just completely want to get wred of looping and create nice and sound vectorized script.
Thank you so much!

Akzeptierte Antwort

Mohammad Sami
Mohammad Sami am 27 Apr. 2021
Bearbeitet: Mohammad Sami am 27 Apr. 2021
Are the Tables T1, T2, Tn compatible with each other, meaning they have the same column definitions.
Are the only data in the structure is T1, T2.. Tn.
If that is the case you can try doing this.
temp = struct2cell(s);
tall = vertcat(temp{:}); %concatenate all the tables.
If not then we need to do some extra processing.
temp = struct2cell(s);
temp = temp(cellfun(@istable,temp));
% assuming all table have Date_column
dts = cellfun(@(x)x.Date_column,temp,'UniformOutput',false);
dtsall = vertcat(dts{:});

Weitere Antworten (0)

Kategorien

Mehr zu Structures finden Sie in Help Center und File Exchange

Community Treasure Hunt

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

Start Hunting!

Translated by