如何在Matlab中绘制int64值?

4

我尝试在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位整数?

此外,由于预算限制,我无法访问工具箱。

感谢您的帮助!


7
FYI,那些不是 int64 值,它们是双精度浮点数。因为它们大于 flintmax,所以可能无法准确表示。你需要使用 int64uint64 来表示 64 位整数。至于绘图,你可以减去最小值并绘制图表,或者可以使用 ylimaxis 来调整坐标轴的值。 - horchler
@horchler - 感谢指出错误。按照您的建议,我尝试使用最小值来进行减法操作,但是不幸的是,在某些情况下差异也是int64double类型! - Sadia1990
@horchler建议的很好,只需将您的数组定义为uint64(..),然后绘制array_of_longs-min(array_of_longs)即可。 - Itamar Katz
您IP地址为143.198.54.68,由于运营成本限制,当前对于免费用户的使用频率限制为每个IP每72小时10次对话,如需解除限制,请点击左下角设置图标按钮(手机用户先点击左上角菜单按钮)。 - patrik
2
@patrick,在你的问题中加入链接;): https://dev59.com/tZLea4cB1Zd3GeqP5Kct - Nick
@ItamarKatz 我确实尝试过这样做,但在我的数据集中,(max-min) 最终也变成了 uint64,因此我仍然得到了一个图,无法区分哪个 y 值对应于 'x'。 - Sadia1990
1个回答

0

我现在找到了一个可行的解决方法。我已经获取了 uint64 数组的长度,并为每个唯一的 uint64 值分配了一个随机整数。然后,我在 x-values 上绘制了这些随机值。 例如:

% array_of_longs = {large set of uint64 values}
unique_longs = unique(array_of_longs);
num_unique = length(unique_longs);
random_key = randi([1,num_unique*2],1,num_unique);
array_keys = ones(1,length(array_of_longs));
for i=1:length(array_of_longs)
    array_keys(i) = random_key(find(unique_longs == array_of_longs(i)));
end

f = figure;
plot(x_values,array_keys,'x');

我还将输出一个表格,将每个uint64值映射到其键。

感谢您所有的评论。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接