【发布时间】:2016-01-04 03:41:53
【问题描述】:
我正在尝试在 Matlab R2013a 中绘制一组 int64 数字。
作为我想要实现的示例如下所示:
array_of_longs = [13286492335502040542 13286492335502040923 13286492335502042285 13286492335502042469 13286492335502042826 13286492335502044792 13286492335502045012 13286492335502046097 13286492335502047200 13286492335502049511 13286492335502050256 13286492335502050559 13286492335502053284 13286492335502055890 13286492335502056026 13286492335502057640];
horizontal_axis = 1:16;
f = figure;
plot(horizontal_axis,array_of_longs,'x')
不幸的是,即使值不同,图中的所有 x 似乎都在一条水平直线上。 我无法“放大”y 轴来帮助显示变化。
绘制 64 位整数是否有技巧或解决方法?
另外,由于预算限制,我无法访问工具箱。
感谢您的帮助!
【问题讨论】:
-
仅供参考,这些不是
int64值——它们是双精度值。因为它们大于flintmax,所以它们可能无法准确表示。您需要使用int64或uint64来表示64 位整数。就绘图而言,减去min值并绘制它怎么样?或者您可以使用ylim或axis来调整您的轴值。 -
@horchler - 感谢您指出更正。我尝试根据您的建议减去最小值,但不幸的是,在某些情况下,差异也是
int64或double! -
@horchler 建议的工作正常,只需将您的数组定义为
uint64(..),然后绘制array_of_longs-min(array_of_longs)。 -
有趣的是,
uint64的数组似乎不适用于所有 64 位。如果人们期望它是相同的数字p=uint64([0;0]); p(1)=13286492335502040542,这不会给出预期的输出。但是q = uint64(13286492335502040542)可以。它还与p=uint64([0;0]); p(1)=uint64(13286492335502040542)合作。我觉得这有点奇怪。也许有人知道更多? Matlab 2014a,Windows 7。 -
@patrick,在你的问题中链接;):stackoverflow.com/questions/34591588/…