这篇文章介绍如何在仿真过程中记录想要的数据。仿真过程中可以用scope示波器来实时查看数据,但有时候 我们希望能把过程中的数据记录下来,便于后续进行分析、画图、处理、存储等功能。这时候,可以采用simulink的logging data功能。下面介绍如何应用该方法:
(1)在Simulink中,快捷键Ctrl+E,打开Configuration Parameters对话框。 (2)在图中2处修改你想要的信号记录的名称,如本文改为car_logsout。该名称后续可用来读取记录的信号数据。 (3)其他的默认即可,如果想修改可以参阅matlab help文件来了解各个修改项的含义。
(1)在simulink模型中,选中某个想要记录的信号,双击该信号,输入信号的名称,如本文中的VwFL信号 (2)选中该信号后,右键单击然后选中“Log Selected Signals”,这时Simulink模型中,待记录的信号出现了一个蓝色的wifi标志:
得到如下的信息。 注:在本文例子中,用了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);得到如下图: