查看和访问信号记录数据

目录

信号记录对象

通过编程方式访问数据

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

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


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

也可以使用 MATLAB® 命令以编程方式访问信号记录数据。

提示

        如果没有看到在模型中标记要记录的信号的记录数据,请检查记录配置。使用信号记录选择器为其记录设置被覆盖了的信号启用记录功能。

信号记录对象

        该软件将信号记录数据保存在 Simulink.SimulationData.Dataset 对象中,该对象是一个 MATLAB 工作区变量。信号记录变量的默认名称为 logsout。您可以使用“配置参数”对话框中信号记录参数旁边的文本框来更改变量名称。

        可以通过设置数据集信号格式配置参数指定数据集中各个信号的数据是使用 MATLAB timeseries 还是 timetable 元素。

​        R2016a 之前的版本还支持 ModelDataLogs 格式。要搜索 Dataset 对象中的特定元素,请使用 find 函数。要返回 Dataset 对象元素的名称,请使用 getElementNames 函数。

提示

        要对每个指定的 MATLAB timeseries 对象调用函数,

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

通过编程方式访问数据

        访问 Simulink.SimulationData.Dataset 对象及其元素。

        仿真模型 sldemo_clutch,该模型对一个旋转离合器系统进行建模。然后,访问包含信号记录数据的 Dataset 对象 sldemo_clutch_output。

sim("sldemo_clutch");
sldemo_clutch_output
sldemo_clutch_output = 
Simulink.SimulationData.Dataset 'sldemo_clutch_output' with 10 elements

                         Name          BlockPath                         
                         ____________  _________________________________ 
    1  [1x1 Signal]      Fn            sldemo_clutch/Clutch Pedal       
    2  [1x1 Signal]      Tin           sldemo_clutch/Engine Torque      
    3  [1x1 Signal]      LockedFlag    sldemo_clutch/Friction Mode Logic
    4  [1x1 Signal]      LockupFlag    sldemo_clutch/Friction Mode Logic
    5  [1x1 Signal]      UnlockFlag    sldemo_clutch/Friction Mode Logic
    6  [1x1 Signal]      Tfmaxk        sldemo_clutch/Friction Model     
    7  [1x1 Signal]      Tfmaxs        sldemo_clutch/Friction Model     
    8  [1x1 Signal]      ShaftSpeed    sldemo_clutch/Locked             
    9  [1x1 Signal]      EngineSpeed   sldemo_clutch/Unlocked           
   10  [1x1 Signal]      VehicleSpeed  sldemo_clutch/Unlocked           

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

        要访问 Dataset 对象元素,可以使用带花括号的索引。例如,使用索引 2 访问信号记录 Dataset 对象的 Tin 元素。

el2 = sldemo_clutch_output{2}
el2 = 
  Simulink.SimulationData.Signal
  Package: Simulink.SimulationData

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


  Methods, Superclasses

        信号数据作为 timeseries 对象存储在 Simulink.SimulationData.Signal 对象的 Values 属性中。时间值在 timeseries 对象的 Time 属性中。信号值在 Data 属性中。

el2.Values
  timeseries

  Common Properties:
            Name: 'Tin'
            Time: [387x1 double]
        TimeInfo: tsdata.timemetadata
            Data: [387x1 double]
        DataInfo: tsdata.datametadata

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

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

  • 名称包含空格的信号

  • 名称包含换行符的信号

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

        ​对模型进行仿真,然后查看 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 格式记录了信号数据,则可以使用 convertToDataset 函数更新信号记录数据,以使用 Dataset 格式。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值