【发布时间】:2018-05-27 14:18:58
【问题描述】:
我正在使用 matlab 从 simulink 运行一个 simulink 模型。我的系统主要在 matlab 中,但我运行 slx 文件并导出要在 matlab 中使用的输出。模拟运行 48 秒(1 秒代表一小时)。当我得到输出时,我希望它的质量与我在 simulink 中查看时的质量相同,但事实并非如此。这是我的数据在 simulink 中的样子的示例:
这是我在matlab中绘制时的样子(导出时样本数变为307)
我尝试在 simulink 中更改步长或更改求解器,但这会使我的 simulink 输出失真,如下所示。
我的求解器是 ode45,如何控制数据的采样频率,以便在导出到 matlab 后不会得到不同的分辨率。 P.S 一旦我导出它,我将插入数据,以便在几个小时之间获取样本(每分钟而不是每小时一个样本)。如果我可以通过更改步长立即完成,那将是完美的。
按照您的建议,当我绘制它与时间而不是样本时,我得到了这个图
谢谢
【问题讨论】:
-
MATLAB 图中的蓝色信号不像(第一个)Simulink 图中的红线那样是一个真正的步骤,因为您使用
plot来可视化它而不是stairs。但是为什么它的高度只有 30,而 Simulink 图像显示高度为 50。你确定它们是同一个信号吗? -
此外,您无法将基于时间的信号(Simulink 中的信号)与基于索引的信号(MATLAB 中的信号)进行比较。当您将数据从 Simulink 转储到 MATLAB 时,您还应该保存与这些点对应的时间向量。我敢打赌,如果您的 MATLAB 图中的 x 轴是时间,那么这两个图看起来会相同(除了我之前评论中的 30 问题的高度)。
-
你是对的,当我用时间绘制它时,它是一个不同的信号(我用数字与时间更新了帖子)。关于幅度,这只是增益,它是一个布尔信号(1 或零),所以为了看到它,我在 simulink 中将它乘以 50,在 matlab 中乘以 30(通过 misak)。但这是同一个信号,对我来说重要的是它不为零。