如何保存Simulink的输出?

时间:2015-03-10 21:42:01

标签: matlab simulink stateflow

我是一名学习使用MATLAB的学生。对于作业,我必须创建一个简单的状态机并收集一些结果。我以前习惯使用Verilog / Modelsim,我只想在状态机的输出发生变化时收集数据,这不一定是每次/采样周期。

现在我的模型看起来像这样:

RequestChart ----> ResponseChart ----> Unit Delay Block --> (Back to RequestChart)
               |                  |
               ------------------------> Mux --> "To Workspace" Sink Block

我已尝试将接收器设置为" Array"格式,但它只保存51个值。我已经尝试将它设置为" Timeseries",但它可以节省大量零值。

有人可以给我一些建议吗?就像我说的,MATLAB对我来说是新手,如果我需要澄清我的问题或提供更多信息,请告诉我。

编辑:这是我的模型的屏幕截图: enter image description here

2 个答案:

答案 0 :(得分:2)

通常,Simulink会在每个集成步骤输出一个样本。如果您只想在特定事件发生时输出数据 - 在这种情况下仅在某些数据发生更改时 - 请执行以下操作,

  • 将状态机的输出运行到检测更改块(来自逻辑和位操作库)
  • 将该信号运行到触发子系统的触发端口。
  • 将状态机的输出运行到触发子系统的数据端口。
  • 在触发的子系统内部
  • ,将数据信号运行到To Workspace块。

数据仅在触发发生的时间点保存,即数据更改时。

答案 1 :(得分:1)

在您的Simulink窗口中,确保相对容差很小,这样您就可以在开始和结束时间之间生成更多的点。单击窗口顶部的 Simulation 选项,然后单击Model Configuration Parameters。

enter image description here

从那里,将相对容差改为小的......就像1e-10一样。之后,尝试再次运行模拟。您的输出数组中应该有更多的点,您现在可以保存它们。

enter image description here