文档

将日志数据转换为数据集格式

将工作区数据转换为数据集

这个例子展示了如何转换MATLAB®时间序列数据数据集格式。myvdp_timeseriesvdp带2的模型到工作空间模块配置simout和simout1记录数据在MATLAB时间序列格式。如果您有使用的模型,请考虑使用这样的过程到工作空间块将数据记录为MATLAB时间序列格式。

使用万博1manbetxSimulink.SimulationData.Dataset构造函数将MATLAB时间序列数据转换为数据集格式化,然后连接两个数据集。

  1. vdp模型,添加两个到工作空间块到模型中,如图所示。

  2. 设置保存格式两个块的参数。集Timeseries

  3. 将模型保存为myvdp_timeseries

  4. 模拟模型。

    仿真使用To Workspace块记录数据。

  5. 访问信号记录格式,logsout

    logsout
    logsout = 万博1manbetxSimulink. simulationdata . dataset Package: Simulink。模拟Data Characteristics: Name: 'logsout' Total Elements: 2 Elements: 1: 'x1' 2: 'x2' -Use get or getElement to access elements by index or name. -Use addElement or setElement to add or modify elements. Methods, Superclasses
  6. 将MATLAB时间序列数据从两个To Workspace块转换为数据集

    ds = 万博1manbetxSimulink.SimulationData.Dataset(simout);ds1 = 万博1manbetxSimulink.SimulationData.Dataset(simout1);

    ds是第一个To Workspace块数据的变量名。ds1的是第二个To Workspace块数据的变量名。

  7. 将两个数据集连接到dsfinal.的格式dsfinal匹配logsout

    Dsfinal = ds.concat(ds1)
    dsfinal = 万博1manbetxSimulink. simulationdata . dataset Package: Simulink。模拟Data Characteristics: Name: 'simout' Total Elements: 2 Elements: 1: 'x1' 2: 'x2' -Use get or getElement to access elements by index or name. -Use addElement or setElement to add or modify elements. Methods, Superclasses

转换结构没有时间到数据集

这个例子展示了如何将没有时间数据的结构转换为数据集格式。myvdp_structurevdp带2的模型到工作空间为simout和simout1配置的块以结构格式记录数据,如下所示。

如果你的模型使用到工作空间将日志数据转换为结构格式的块,请考虑使用类似于此的过程将它们转换为数据集格式。

  1. vdp模型,添加两个到工作空间块到模型中,如图所示。

  2. 保存格式两个块的参数,选择结构

  3. 为两个发送到两个的信号启用信号记录到工作空间登录块Ds格式。

  4. 将模型保存为myvdp_structure

  5. 模拟模型。

    仿真使用To Workspace块记录数据。

  6. 将结构数据从两个To Workspace块转换为数据集

    ds = 万博1manbetxSimulink.SimulationData.Dataset(simout);ds1 = 万博1manbetxSimulink.SimulationData.Dataset(simout1);

    simout是第一个To Workspace块数据的变量名。simout1是第二个To Workspace块数据的变量名。

    在没有时间或数组的结构转换中,时间从t=0开始,增量为1。

  7. 中第一个元素的值ds

    ds.get (1) .Values.Time
    Ans = 0 1 2 3…61 62 63
  8. 从信号记录中获取第一个元素的时间值。

    logsout.get (1) .Values.Time
    Ans = 0 0.0001 0.0006 0.0031…19.2802 19.6802 20.0000
  9. 观察时间戳之间的差异

    • 记录在结构中的数据,没有转换为的时间数据集格式

    • 登录数据数据集格式

以编程方式访问记录的数据集格式数据

当您使用默认值时数据集信号记录格式,Simulink万博1manbetx®将日志数据保存为万博1manbetxSimulink.SimulationData.Dataset对象。有关从该对象提取信号数据的信息,请参见万博1manbetxSimulink.SimulationData.Dataset参考页面。

万博1manbetxSimulink.SimulationData.Dataset对象包含万博1manbetxSimulink.SimulationData.Signal对象来获取每个记录的信号。

对于总线信号万博1manbetxSimulink.SimulationData.Signal对象包含了MATLAB的一个结构timeseries对象。

万博1manbetxSimulink.SimulationData.Dataset类提供了两种方法,用于访问信号记录数据及其相关信息。

名字

描述

万博1manbetxSimulink.SimulationData.DataSet.get

你也可以用getElement方法共享语法和行为得到方法。

根据索引、名称或块路径从数据集中获取元素或元素集合。

万博1manbetxSimulink.SimulationData.DataSet.numElements

获取数据集中元素的个数。

方法访问信号记录数据的示例数据集格式,请参阅万博1manbetxSimulink.SimulationData.Dataset

总线信号记录数据访问阵列

一组总线使用的信号记录数据数据集信号记录格式。

在一组总线中访问特定信号数据的一般方法是:

  1. 使用一个万博1manbetxSimulink.SimulationData.Dataset.get(或getElement方法来访问日志数据中的特定信号(默认情况下logsout变量)。

  2. 要获取这些值,请在总线数组内进行索引。

  3. 再次索引以获取特定总线的数据。

例如,获取Constant6块的信号记录数据ex_log_nested_aob模型,用于topBus信号馈送终结者块:

logsout.getElement (topBus) .Values.a .firstConst.data (2, 2)

下面是访问总线信号记录数据数组的其他示例。有关显示如何记录总线数据数组的另一个示例,请参见sldemo_mdlref_bus

简单的总线阵列

总线中的总线数组

总线的嵌套数组

访问具有重复名称的信号的数据

对于具有多个具有相同信号名称的信号的模型,信号记录数据包括一个万博1manbetxSimulink.SimulationData.Signal为具有重复名称的每个信号创建。

要访问具有重复名称的特定信号,请使用一个在这些方法中:

  • 要找到特定信号的数据,目视检查显示的输出万博1manbetxSimulink.SimulationData.Signal对象。

  • 使用万博1manbetxSimulink.SimulationData.Dataset.getElement方法,指定信号源块的块路径。

  • 要使用重复的信号名称遍历信号,请使用万博1manbetxSimulink.SimulationData.Dataset.getElement方法,并带有索引参数。

  • 使用“信号属性”对话框指定不同的名称。在正常模式下,当具有重复名称的信号没有出现在引用模型的多个实例中时,请考虑使用此方法。

    1. 在模型中,右键单击信号。

    2. 在上下文菜单中,选择属性

    3. 在“信号属性”对话框中设置日志的名字自定义并指定与信号名称不同的名称。

    4. 模拟模型并使用万博1manbetxSimulink.SimulationData.Dataset.getElement带有名称参数的方法。

提示

或者,您可以使用信号日志选择器来访问特定的信号。有关详情,请参阅用信号记录选择器覆盖信号记录设置

处理信号记录数据中的换行字符

在使用的信号日志数据中处理日志名称中的换行符数据集格式,使用sprintf中的命令getElement调用。例如:

topOut.getElement (sprintf (“增量\ nBUS”))

另请参阅

相关的例子

更多关于

这个话题有帮助吗?