我是一名学习使用MATLAB的学生。对于作业,我必须创建一个简单的状态机并收集一些结果。我以前习惯使用Verilog / Modelsim,我只想在状态机的输出发生变化时收集数据,这不一定是每次/采样周期。
现在我的模型看起来像这样:
RequestChart ----> ResponseChart ----> Unit Delay Block --> (Back to RequestChart)
| |
------------------------> Mux --> "To Workspace" Sink Block
我已尝试将接收器设置为" Array"格式,但它只保存51个值。我已经尝试将它设置为" Timeseries",但它可以节省大量零值。
有人可以给我一些建议吗?就像我说的,MATLAB对我来说是新手,如果我需要澄清我的问题或提供更多信息,请告诉我。
编辑:这是我的模型的屏幕截图:
答案 0 :(得分:2)
通常,Simulink会在每个集成步骤输出一个样本。如果您只想在特定事件发生时输出数据 - 在这种情况下仅在某些数据发生更改时 - 请执行以下操作,
数据仅在触发发生的时间点保存,即数据更改时。
答案 1 :(得分:1)
在您的Simulink窗口中,确保相对容差很小,这样您就可以在开始和结束时间之间生成更多的点。单击窗口顶部的 Simulation 选项,然后单击Model Configuration Parameters。
从那里,将相对容差改为小的......就像1e-10
一样。之后,尝试再次运行模拟。您的输出数组中应该有更多的点,您现在可以保存它们。