概述
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);
得到如下图:
最后
以上就是忧虑鸭子为你收集整理的Matlab Simulink利用logging data来实时记录数据并后处理使用logging data来记录数据的全部内容,希望文章能够帮你解决Matlab Simulink利用logging data来实时记录数据并后处理使用logging data来记录数据所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复