首页 > 解决方案 > 同步存储在结构中的时间表

问题描述

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

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

我正在尝试用来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})返回结构的第一个字段名称的时间表DATA

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

标签: matlabsynchronizetimetable

解决方案


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

DATA.('Motor','Actuators')

解决此问题的一种方法是将值从数组中提取出来DATAcell然后您可以使用{:}索引生成以逗号分隔的列表作为 的输入synchronize,如下所示:

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

推荐阅读