我有一个包含
的文件1349542114842,2
1349542114872,4
1349542116037,1
1349542126680,5
1349542190738,3
1349542190775,4
其中第一列是纪元时间。
我使用
将其加载到matlab中load('path to file')
加载后我可以看到第一列正在更改为显示
1.349542114842000e+12
这对我来说非常混乱,因为当我绘制时,我的轴值是一个非常偏斜的纪元时间。 有任何想法吗 ?? (我能想到的黑客是在绘图时减去e + 3,但它并没有完全解决我的问题)
答案 0 :(得分:3)
如果第一列确实包含非负整数值,您可以将其强制转换为uint64
以获得完全精度:
format long % just for display purpose:
% with double precision
a = [
1349542114842,2
1349542114872,4
1349542116037,1
1349542126680,5
1349542190738,3
1349542190775,4
];
这导致
>> a
a =
1.0e+012 *
1.349542114842000 0.000000000002000
1.349542114872000 0.000000000004000
1.349542116037000 0.000000000001000
1.349542126680000 0.000000000005000
1.349542190738000 0.000000000003000
1.349542190775000 0.000000000004000
现在转换为uint64:
% now with unsigned integer 64 precision
a = uint64([
1349542114842,2
1349542114872,4
1349542116037,1
1349542126680,5
1349542190738,3
1349542190775,4
]);
这导致:
>> a
a =
1349542114842 2
1349542114872 4
1349542116037 1
1349542126680 5
1349542190738 3
1349542190775 4
答案 1 :(得分:2)
您的纪元看起来像unix time stamps,精确到毫秒。您可以将这些转换为datenums
:
a = [
1349542114842,2
1349542114872,4
1349542116037,1
1349542126680,5
1349542190738,3
1349542190775,4
];
b = a(:,1)/1000/86400 + datenum(1970,1,1);
然后用它来制作情节。您可以正确显示它们:
datetick('y', 'mmm dd, HH:MM:SS')
结果如下:
或者,如果您希望它们位于x
- 轴上,您可能需要旋转标签。你最好使用this utility off the file exchange,因为手工操作是一个真正的痛苦(Matlab应该开始支持本地恕我直言)。
答案 2 :(得分:1)
如果问题是情节的y轴没有显示完整数字(例如1.35e12
而不是1349542114840
,1349542114870
等),您可以使用此工具更改格式:{{ 3}}
示例:
plot(1:10, (1:10) + 1e12);
ticklabelformat(gca,'y','%d')
结果: