首页 文章

从Simulink到Matlab的采样频率

提问于
浏览
0

我正在使用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 回答

  • 1

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

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

    但是......至于为什么simulink范围和绘制数据之间的数据看起来不同 . 对于可变时间步长求解器,有 refine factor (配置参数 - >数据导入/导出 - >附加参数) . 默认设置为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

相关问题