Alan B.
Alan B.

Reputation: 59

Synchronize timetables stored in a structure

I am dynamically storing data from different data recorders in timetables, nested in a structure DATA, such as DATA.Motor (timetable with motor data), DATA.Actuators (timetable with actuators data) and so on.

My objective is to have a function that synchronizes and merges these timetables so I can work with one big timetable.

I am trying to use synchronize to merge and synchronize those timetables:

fields = fieldnames(DATA);    
TT = synchronize(DATA.(fields{1:end}));

but get the following error:

Expected one output from a curly brace or dot indexing expression, but there were 3 results. 

This confuses me because DATA.(fields{1}) return the timetable of the first field name of the DATA structure.

Any thought on how I can solve this is greatly appreciated.

Upvotes: 0

Views: 317

Answers (1)

Edric
Edric

Reputation: 25140

The problem here is that fields{1:end} is returning a "comma-separated list", and you're not allowed to use one of those as a struct dot-index expression. I.e. it's as if you tried the following, which is not legal:

DATA.('Motor','Actuators')

One way to fix this is to pull out the values from DATA into a cell array, and then you can use {:} indexing to generate the comma-separated list as input to synchronize, like this:

DATA = struct('Motor', timetable(datetime, rand), ...
              'Actuators', timetable(datetime, rand));
DATA_c = struct2cell(DATA);
TT = synchronize(DATA_c{:});

Upvotes: 1

Related Questions