我有一个10000x43阵列,代表从数据采集硬件中获取的测试数据。第一列是时间向量,其余列是每个通道。我还有一个1x43的单元阵列,用于定义每个通道的名称。
我想从这个数组数据创建一个timeseries对象。我想这样做的原因是我可以在总线选择器块中使用通道名称 - 这样可以很容易地将测试数据提供给simulink模型。
我已经在网上查看了文档但是我没有太多运气如何重现在simulink中使用“ToWorkspace”块时获得的相同类型的时间序列对象。
答案 0 :(得分:1)
假设您有一个包含通道名称和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;