OpenGL图形工具包(qt
和fltk
)使用单精度进行渲染。此限制特别适用于使用的时间序列相对于串行日期的绘图日期编号
, 日期str
,日期struct
和日期刻度
函数。
序列日期将时间戳编码为自零年以来的天数,以小时、分钟、秒为小数部分。1999年12月31日,序列号表示为730485。具有该整数部分的双精度变量允许其小数部分的分辨率为1.2e-10,表示为5微秒。但在单精度下,分辨率降低到0.06左右,即45分钟。任何试图以更精细的粒度绘制带有时间戳的数据的行为都会导致图形失真。
作为一种变通方法,可以使用gnuplot
图形工具包减去2000年——即。,日期编号(2000,0,0)
或730485——来自时间值。从于日历结构体每2000年重复一次,年、月、日和周之间的关系将保持不变日期刻度
函数仍然正确。只有几年才会缺少千年数字。因此,“2020”将被打印为“20”。例如
#一分钟内24小时的时间戳步长st=datenum(2020,1,1):(1/1440):datenum(2020,1,2);#一些示例时间序列datax=-cos(2*pi*t)+rand(size(t))/10;子地块(1,2,1);图(t,x);日期刻度(“x”);xlabel(“序列日期”);标题(“问题”);子地块(1,2,2);绘图(t-730485,x);日期刻度(“x”);xlabel(“2000年后”);标题(“变通方法”);
其结果可以在中看到图15.8.
同样,其他数据也可以被翻译或重新缩放以解决这个问题。
版权所有 © 2024 Octave中文网
ICP备案/许可证号:黑ICP备2024030411号