Matlab Simulink利用logging data来实时记录数据并后处理

使用logging data来记录数据

这篇文章介绍如何在仿真过程中记录想要的数据。仿真过程中可以用scope示波器来实时查看数据,但有时候 我们希望能把过程中的数据记录下来,便于后续进行分析、画图、处理、存储等功能。这时候,可以采用simulink的logging data功能。下面介绍如何应用该方法:

配置logging data

(1)在Simulink中,快捷键Ctrl+E,打开Configuration Parameters对话框。
(2)在图中2处修改你想要的信号记录的名称,如本文改为car_logsout。该名称后续可用来读取记录的信号数据。
(3)其他的默认即可,如果想修改可以参阅matlab help文件来了解各个修改项的含义。
在这里插入图片描述

选取待记录的信号

(1)在simulink模型中,选中某个想要记录的信号,双击该信号,输入信号的名称,如本文中的VwFL信号
在这里插入图片描述
(2)选中该信号后,右键单击然后选中“Log Selected Signals”,这时Simulink模型中,待记录的信号出现了一个蓝色的wifi标志:
在这里插入图片描述
在这里插入图片描述

读取或访问记录的信号

  1. 仿真过程中,信号会记录在workspace工作区。仿真完成后,可以对记录的信号进行读取。
  2. Simulink实际上是 将信号记录数据保存在 Simulink.SimulationData.Dataset 的对象中。该对象是一个 MATLAB 工作区变量。信号记录变量的默认名称为 logsout;本文中修改为了car_logsout。
  3. 记录信号的数据实际上有两种格式,一种是 MATLAB timeseries ,另一种是 timetable 元素,默认是前者。
  4. 可以通过编程脚本方式访问数据。要访问 信号(即Dataset 对象)的元素,使用{}的索引。
    例如,可以使用car_logsout{1}访问 car_logsout信号记录 Dataset 对象的第一个元素。本文中,如仿真结束后,在matlab命令行中输入
car_logsout

得到如下的信息。
在这里插入图片描述
注:在本文例子中,用了level2 s function,仿真后工作区中的数据是out,因此需要输入

out.car_logsout

在这里插入图片描述
在这里插入图片描述

  1. 使用大括号 { } 来访问某个信号:
    A: 系统采用Simulink.SimulationData.Dataset 对象来存储记录数据。
    B:利用numElements 来获取元素的个数

    num_elements = logsout.numElements

    C:利用getElement来获取元素,通过index或名字
    Use to access elements by index or name.

    element1 = logsout.getElement(1);
    element2 = logsout.getElement(‘x1’);

    E: 利用 plot 来画出元素与时间的曲线:

    plot( ds );

例子

本文采用的例子中,信号记录名称改为car_logsout,共记录了22个元素(信号或变量)。由于simulink模型中含有level2 的s函数,仿真完成后,工作区中数据集名称为out。访问car_logsout需要用out.car_logsout。

element_VwFL = out.car_logsout.getElement('VwFL');
plot(element_VwFL.Values);

得到如下图:
在这里插入图片描述

评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值