同步存储在结构中的时间表

Synchronize timetables stored in a structure

我将来自不同数据记录器的数据动态存储在时间表中,嵌套在结构 DATA 中,例如 DATA.Motor(带有电机数据的时间表),DATA.Actuators(带有执行器的时间表数据)等等。

我的objective是要有一个同步和合并这些时间表的功能,这样我就可以使用一个大时间表。

我正在尝试使用 synchronize 合并和同步这些时间表:

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

但出现以下错误:

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

这让我很困惑,因为 DATA.(fields{1}) return DATA 结构的第一个字段名称的时间表。

非常感谢任何关于如何解决这个问题的想法。

这里的问题是 fields{1:end} 正在返回一个“逗号分隔列表”,并且您不能将其中一个用作结构点索引表达式。 IE。就好像您尝试了以下不合法的操作:

DATA.('Motor','Actuators')

解决此问题的一种方法是将 DATA 中的值提取到 cell 数组中,然后您可以使用 {:} 索引生成以逗号分隔的列表,如下所示输入 synchronize,像这样:

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