Simulink:在 scope/block 中绘制时间序列以可视化数据
Simulink: Plot Timeseries in a scope/block to visualize data
我有一个调用用户定义函数的 Simulink 块。此函数调用另一个函数:thingspeakread.m(由ThingSpeak Official Toolbox提供)。
从这里开始,我想要两个结果。数据(数字类型、向量)和时间戳(字符串、向量)。
[data,timestamps] = thingSpeakRead(___)
现在,我可以毫无问题地将 "Data" 的值获取到作用域中(使用 coder.extrinsic('thingSpeakRead') 并预分配变量来存储此类点)。我遇到的问题是:我需要更好地理解数据可视化,为此,我需要根据时间戳向量中显示的信息绘制此 "Data"。时间戳仅每分钟变化。
我会尝试做的,但不是很令我满意:
- 使用格式为'mm/dd/yyyy HH:MM:SS'
的datenum()将时间戳转换为数值
这个选项发回一个巨大的数字(确实可以用来绘制数据与时间的关系图,但它看起来不像 'good' 因为数字太大了,我不喜欢它).
我也想过这些:
- 将日期转换为儒略日期类型。
- 将小时、分钟和秒转换为 3 个不同的数组。
但我没有看到我想要的地方(这是绘制数据与时间的关系,能够轻松发现 "Time" 显示的数字对应于特定的 HH:MM:SS 一天)。
请问大家有什么建议吗?非常感谢!
编辑 1:我可以在 Simulink 中使用类似 datetick() 的东西吗?
转换为 datenum
的操作是将 "dates" 传递到 Simulink 信号的唯一方法。
没有显示时间序列的机制,日期显示在 x 轴上,无需编写自定义代码。
如果您不需要显示时间序列,因为模拟是 运行 那么只需将其转储到现有代码中的 mat 文件,并在 post 处理期间生成绘图.
如果你想让它显示为模拟 运行 那么你需要编写一个自定义显示块。这应该作为 Level-2 M-Code S-Function
来完成,但可以使用 MATLAB Function
块来完成。无论哪种方式,您都可以将 datenum
输入块,然后将 datenum
转换回日期 - 在生成可视化之前使用 datetime
之类的东西,或者之后使用 datetick
。
我有一个调用用户定义函数的 Simulink 块。此函数调用另一个函数:thingspeakread.m(由ThingSpeak Official Toolbox提供)。
从这里开始,我想要两个结果。数据(数字类型、向量)和时间戳(字符串、向量)。
[data,timestamps] = thingSpeakRead(___)
现在,我可以毫无问题地将 "Data" 的值获取到作用域中(使用 coder.extrinsic('thingSpeakRead') 并预分配变量来存储此类点)。我遇到的问题是:我需要更好地理解数据可视化,为此,我需要根据时间戳向量中显示的信息绘制此 "Data"。时间戳仅每分钟变化。
我会尝试做的,但不是很令我满意:
- 使用格式为'mm/dd/yyyy HH:MM:SS' 的datenum()将时间戳转换为数值
这个选项发回一个巨大的数字(确实可以用来绘制数据与时间的关系图,但它看起来不像 'good' 因为数字太大了,我不喜欢它).
我也想过这些:
- 将日期转换为儒略日期类型。
- 将小时、分钟和秒转换为 3 个不同的数组。
但我没有看到我想要的地方(这是绘制数据与时间的关系,能够轻松发现 "Time" 显示的数字对应于特定的 HH:MM:SS 一天)。
请问大家有什么建议吗?非常感谢!
编辑 1:我可以在 Simulink 中使用类似 datetick() 的东西吗?
转换为 datenum
的操作是将 "dates" 传递到 Simulink 信号的唯一方法。
没有显示时间序列的机制,日期显示在 x 轴上,无需编写自定义代码。
如果您不需要显示时间序列,因为模拟是 运行 那么只需将其转储到现有代码中的 mat 文件,并在 post 处理期间生成绘图.
如果你想让它显示为模拟 运行 那么你需要编写一个自定义显示块。这应该作为 Level-2 M-Code S-Function
来完成,但可以使用 MATLAB Function
块来完成。无论哪种方式,您都可以将 datenum
输入块,然后将 datenum
转换回日期 - 在生成可视化之前使用 datetime
之类的东西,或者之后使用 datetick
。