我有一个 10000x43 数组,表示从数据采集硬件获取的测试数据。第一列是时间向量,其余列是每个通道。我还有一个 1x43 单元格数组,用于定义每个通道的名称。
我想从这个数组数据创建一个时间序列对象。我想这样做的原因是我可以在总线选择器块中使用通道名称 - 这使得将测试数据输入到 simulink 模型中变得很容易。
我已经查看了在线和文档,但在如何重现我在 simulink 中使用“ToWorkspace”块时获得的相同类型的时间序列对象方面我没有太多运气。
假设您有一个包含通道名称的元胞数组和一个 mXn 数据数组,其中第一列是时间向量,其他列以与元胞数组中的值相同的顺序表示数据。
其主要部分是创建与数据同名的 simulink 总线对象,并创建具有相同名称的各个时间序列对象的结构。这是我无法从文档中找到的部分。
这样做的好处是:
这是您可以复制到 Matlab 并运行的示例代码:
load count.dat
timedata = [1:24]';
count = [timedata count];
clear timedata;
chan_title = {'chan1', 'chan2','chan3'}; % make sure no spaces between words
%% create simulink bus and timeseries structure
rundata_bus = Simulink.Bus;
rundata_ts = struct;
for i = 1:length(chan_title)
%% create bus elements
saveVarsTmp{1}(i, 1) = Simulink.BusElement;
saveVarsTmp{1}(i, 1).Name = chan_title{i};
%% create individual timeseries
rundata_ts.(chan_title{i}) = timeseries(count(:,i),count(:,1),'name',chan_title{i});
end
rundata_bus.Elements = saveVarsTmp{1};
clear saveVarsTmp;