Vectorizing Table in Structure without Loop

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!

 채택된 답변

Mohammad Sami
Mohammad Sami 2021년 4월 27일
편집: Mohammad Sami 2021년 4월 27일

0 개 추천

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{:});

추가 답변 (0개)

카테고리

도움말 센터File Exchange에서 Data Type Conversion에 대해 자세히 알아보기

질문:

2021년 4월 26일

댓글:

2021년 4월 27일

Community Treasure Hunt

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

Start Hunting!

Translated by