从Simulink到Matlab的采样频率

时间:2018-05-27 14:18:59

标签: matlab simulink

我正在使用matlab从simulink运行simulink模型。我的系统主要是在matlab中,但我运行slx文件并输出要在matlab中使用的输出。模拟运行48秒(1秒表示一小时)。当我得到输出时,我期望它与我在simulink中查看时的质量相同,但事实并非如此。以下是我在simulink中看到的数据示例:

enter image description here

以下是我在matlab中绘制它时的样子(导出时样本数变为307)

enter image description here

我尝试在simulink中更改步长或更改解算器,但这会使我的simulink输出失真如下。

enter image description here

我的求解器是ode45,如何控制数据的采样频率,以便在将其导出到matlab后得不到不同的分辨率。 P.S一旦我导出它,我将插入数据,以便我在几小时之间得到样本(每分钟而不是每小时一个样本)。如果我可以通过改变步长来立刻做到这一点,那将是完美的。

根据你的建议,当我用时间而不是样本绘制时,我得到了这个情节

enter image description here

谢谢

1 个答案:

答案 0 :(得分:1)

您使用的是可变步长求解器(ODE45),因此很有可能无法获得一致的采样频率。

确保/控制采样频率的唯一方法是使用固定步长求解器(例如ode4)。

但是......为什么simulink范围和绘制数据之间的数据看起来不同。对于可变时间步长求解器,存在细化因子(配置参数 - >数据导入/导出 - >附加参数)。这默认设置为1.将此值设置为100,您应该获得更一致的样本密度

关于细化因子应该知道什么?

  • 为了获得更平滑的输出并获得更好的时间分辨率,更改细化因子而不是减小步长会快得多。
  • 当细化因子发生变化时,求解器通过在这些点评估连续扩展公式来生成额外的点。
  • 细化因子适用于变步长求解器,在使用ode45时非常有用。
  • 通常值为4会产生更平滑的结果。

https://blogs.mathworks.com/simulink/2009/07/14/refining-the-output-of-a-simulation/ https://uk.mathworks.com/help/simulink/gui/refine-factor.html