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

it2025-01-09  7

Matlab Simulink 实时记录数据并后处理

使用logging data来记录数据配置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标志:

读取或访问记录的信号

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

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

out.car_logsout

使用大括号 { } 来访问某个信号: 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);

得到如下图:

最新回复(0)