3

我有一个 10000x43 数组,表示从数据采集硬件获取的测试数据。第一列是时间向量,其余列是每个通道。我还有一个 1x43 单元格数组,用于定义每个通道的名称。

我想从这个数组数据创建一个时间序列对象。我想这样做的原因是我可以在总线选择器块中使用通道名称 - 这使得将测试数据输入到 simulink 模型中变得很容易。

我已经查看了在线和文档,但在如何重现我在 simulink 中使用“ToWorkspace”块时获得的相同类型的时间序列对象方面我没有太多运气。

4

1 回答 1

1

假设您有一个包含通道名称的元胞数组和一个 mXn 数据数组,其中第一列是时间向量,其他列以与元胞数组中的值相同的顺序表示数据。

其主要部分是创建与数据同名的 simulink 总线对象,并创建具有相同名称的各个时间序列对象的结构。这是我无法从文档中找到的部分。

这样做的好处是:

  • 可以轻松地在 Simulink 的“FromWorkspace”模块中选择特定通道
  • 如果您有其他信息,例如单位,您可以将其编码到时间序列对象(以及 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;
于 2013-06-17T16:28:19.520 回答