matlab - Simulink:在范围/块中绘制时间序列以可视化数据
问题描述
我有一个调用用户定义函数的 Simulink 模块。该函数调用另一个函数:thingspeakread.m(由ThingSpeak 官方工具箱提供)。
从这里开始,我想要两个结果。数据(数字类型、向量)和时间戳(字符串、向量)。
[data,timestamps] = thingSpeakRead(___)
现在,我可以毫无问题地将“数据”的值放入 Scope 中(使用 coder.extrinsic('thingSpeakRead') 并预先分配变量来存储这些点)。我遇到的问题是:我需要更了解数据可视化,为此,我需要根据时间戳矢量中显示的信息绘制这个“数据”。时间戳仅每分钟变化一次。
我会尝试做什么,但不能满足我很多:
- 使用 datenum() 将时间戳转换为数值,格式为 'mm/dd/yyyy HH:MM:SS'
这个选项发回一个巨大的数字(它确实可以用来绘制数据与时间的关系,但它看起来并不“好”,因为这个数字太大而且我不喜欢它)。
我也想过这些:
- 将日期转换为儒略日期类型。
- 将小时、分钟和秒转换为 3 个不同的数组。
但我没有看到让我到达我想要的地方(即绘制数据与时间,能够轻松发现“时间”显示的数字对应于一天的特定 HH:MM:SS)。
请问各位有什么可以推荐的吗?提前非常感谢!
编辑 1:我可以在 Simulink 中使用类似datetick()的东西吗?
解决方案
您正在做的转换是将“日期”传递给 Simulink 信号datenum
的唯一方法。
没有显示时间序列的机制,日期显示在 x 轴上,无需编写自定义代码。
如果您不需要在模拟运行时显示时间序列,那么只需将其转储到现有代码中的 mat 文件中,并在后处理期间生成绘图。
如果您希望它在模拟运行时显示,那么您需要编写一个自定义显示块。这应该作为 来完成Level-2 M-Code S-Function
,但可以使用MATLAB Function
块来完成。无论哪种方式,您都可以将 输入datenum
到块中,然后将其转换datenum
回日期 -datetime
在生成可视化之前使用类似的东西,或者在之后使用datetick
.
推荐阅读
- html - 像背景 CSS 一样透明的表格
- node.js - 使用 jest 在另一个函数中模拟函数
- web-applications - 清洁架构:我应该为每个 Http 端点都有一个用例吗?
- python - 如何使用随机文本获取标签的高度--kivymd
- google-sheets - 谷歌表格:避免#DIV/0!在 ArrayFormula()
- react-native - NativeModules.CallDetectionManagerAndroid 为空
- google-sheets - 如何使用 AverageIf 过滤 2 个特定行的每 2 列?
- python - 使用 python 将下载的图像保存到本地文件夹中
- php - 颤振:显示来自(MYSQL)数据库的视频
- javascript - 如果在 Javascript Setter 中