Main Content

本页的翻译已过时。点击此处可查看最新英文版本。

查看和访问信号记录数据

您可以使用仿真数据检查器在仿真期间查看记录的信号数据,也可以使用其他可视化界面查看暂停或停止的仿真的信号记录数据。请参阅决定如何可视化仿真数据

您也可以使用 MATLAB® 命令以编程方式访问信号记录数据,如本主题所述。

提示

如果您没有看到在模型中标记要记录的信号的记录数据,请检查记录配置。使用 Signal Logging Selector 为其记录设置被覆盖了的信号启用记录功能。有关详细信息,请参阅View the Signal Logging ConfigurationOverride Signal Logging Settings

信号记录对象

Simulink® 将信号记录数据保存在 Simulink.SimulationData.Dataset 对象中,该对象是一个 MATLAB 工作区变量。信号记录变量的默认名称为 logsout。您可以更改此变量名称。有关详细信息,请参阅为信号记录数据指定名称

您可以指定数据集中各个信号的数据是使用 MATLAB timeseries 还是 timetable 元素。设置 Dataset signal format 配置参数(有关详细信息,请参阅Dataset signal format)。

R2016a 之前的版本还支持 ModelDataLogs 格式。有关详细信息,请参阅迁移使用旧版 ModelDataLogs API 的脚本

通过编程方式访问数据

您可以使用 Simulink.SimulationData.Dataset API 通过编程方式访问信号记录数据。要访问 Dataset 对象元素,请使用带花括号的索引。例如,您可以使用索引 1 访问 topOut 信号记录 Dataset 对象的第一个元素。此示例基于使用数据集元素的 timeseries 的默认设置。有关 timeseriestimetable 格式数据的详细信息,请参阅Dataset signal format

open_system(docpath(fullfile(docroot,'toolbox','simulink',...
'examples','ex_bus_logging')));
open_system(docpath(fullfile(docroot,'toolbox','simulink',...
'examples','ex_mdlref_counter_bus')));
sim('ex_bus_logging')
topOut
Simulink.SimulationData.Dataset 'topOut' with 4 elements

                         Name          BlockPath                                
                         ____________  ________________________________________ 
    1  [1x1 Signal]      COUNTERBUS    ex_bus_logging/COUNTERBUSCreator        
    2  [1x1 Signal]      OUTPUTBUS     ex_bus_logging/CounterA                 
    3  [1x1 Signal]      INCREMENTBUS  ex_bus_logging/IncrementBusCreator      
    4  [1x1 Signal]      inner_bus     ...erA|ex_mdlref_counter_bus/Bus Creator

  - Use braces { } to access, modify, or add elements using index.
element1 = topOut{1}
element1 = 

  Simulink.SimulationData.Signal
  Package: Simulink.SimulationData

  Properties:
              Name: 'COUNTERBUS'
    PropagatedName: ''
         BlockPath: [1x1 Simulink.SimulationData.BlockPath]
          PortType: 'outport'
         PortIndex: 1
            Values: [1x1 struct]


  Methods, Superclasses
element1.Values
ans = 

      data: [1x1 timeseries]
    limits: [1x1 struct]

要搜索 Dataset 对象中的特定元素,请使用 find 方法。要返回 Dataset 对象元素的名称,请使用 getNames 方法。

提示

要对每个指定的 MATLAB timeseries 对象调用函数,可以使用 Simulink.SimulationData.forEachTimeseries 函数。例如,您可以使用此函数轻松地重采样通过记录总线信号获取的 timeseries 对象结构体中的每个元素。

处理记录的名称中的空格和换行符

此示例显示三个信号,说明信号记录如何处理名称:

  • 名称包含空格的信号

  • 名称包含换行符的信号

  • 未命名信号,该信号源于一个名称包含换行符的模块

对模型进行仿真,然后查看 logsout 变量中的信号记录结果。您可以看到 Dataset 对象中的名称使用空格(其中信号名称包含空格)和换行符(其中名称包含换行符)。未命名信号使用空字符数组作为其名称。

logsout
logsout = 

Simulink.SimulationData.Dataset 'logsout' with 3 elements

                         Name  BlockPath                              
                         ____  ______________________________________ 
    1  [1x1 Signal]      x y   ex_signal_names_with_spaces/Sine Wave 
    2  [1x1 Signal]      a b   ex_signal_names_with_spaces/Sine Wave1
    3  [1x1 Signal]      ''    ex_signal_names_with_spaces/Sine Wave2

  - Use braces { } to access, modify, or add elements using index.

您可以通过名称或索引访问名称包含空格的信号。您只需在传递给 getElement 函数的名称中包含空格即可。要访问其名称包含换行符的信号,请使用索引。

>> logsout{2}
ans = 

  Simulink.SimulationData.Signal
  Package: Simulink.SimulationData

  Properties:
              Name: 'a↵b'
    PropagatedName: ''
         BlockPath: [1×1 Simulink.SimulationData.BlockPath]
          PortType: 'outport'
         PortIndex: 1
            Values: [1×1 timeseries]

访问 ModelDataLogs 格式的记录信号数据

在 R2016a 之前,您可以使用 ModelDataLogs 格式记录信号。从 R2016a 开始,您不能再以 “ModelDataLogs” 格式记录数据。信号记录将使用 “Dataset” 格式。

但是,您可以使用以前的版本中以 “ModelDataLogs” 格式记录的数据。

有关详细信息,请参阅Simulink.ModelDataLogs

另请参阅

| | | | | | | |

相关主题