首页 > 解决方案 > Simulink:在范围/块中绘制时间序列以可视化数据

问题描述

我有一个调用用户定义函数的 Simulink 模块。该函数调用另一个函数:thingspeakread.m(由ThingSpeak 官方工具箱提供)。

从这里开始,我想要两个结果。数据(数字类型、向量)和时间戳(字符串、向量)。

[data,timestamps] = thingSpeakRead(___)

现在,我可以毫无问题地将“数据”的值放入 Scope 中(使用 coder.extrinsic('thingSpeakRead') 并预先分配变量来存储这些点)。我遇到的问题是:我需要更了解数据可视化,为此,我需要根据时间戳矢量中显示的信息绘制这个“数据”。时间戳仅每分钟变化一次。

我会尝试做什么,但不能满足我很多:

这个选项发回一个巨大的数字(它确实可以用来绘制数据与时间的关系,但它看起来并不“好”,因为这个数字太大而且我不喜欢它)。

我也想过这些:

但我没有看到让我到达我想要的地方(即绘制数据与时间,能够轻松发现“时间”显示的数字对应于一天的特定 HH:MM:SS)。

请问各位有什么可以推荐的吗?提前非常感谢!

编辑 1:我可以在 Simulink 中使用类似datetick()的东西吗?

标签: matlabscopetime-seriesdata-visualizationsimulink

解决方案


您正在做的转换是将“日期”传递给 Simulink 信号datenum的唯一方法。

没有显示时间序列的机制,日期显示在 x 轴上,无需编写自定义代码。

如果您不需要在模拟运行时显示时间序列,那么只需将其转储到现有代码中的 mat 文件中,并在后处理期间生成绘图。

如果您希望它在模拟运行时显示,那么您需要编写一个自定义显示块。这应该作为 来完成Level-2 M-Code S-Function,但可以使用MATLAB Function块来完成。无论哪种方式,您都可以将 输入datenum到块中,然后将其转换datenum回日期 -datetime在生成可视化之前使用类似的东西,或者在之后使用datetick.


推荐阅读