【问题标题】:How can I plot int64 values in Matlab?如何在 Matlab 中绘制 int64 值?
【发布时间】: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,所以它们可能无法准确表示。您需要使用int64uint64 来表示64 位整数。就绘图而言,减去min 值并绘制它怎么样?或者您可以使用ylimaxis 来调整您的轴值。
  • @horchler - 感谢您指出更正。我尝试根据您的建议减去最小值,但不幸的是,在某些情况下,差异也是 int64double!
  • @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/…

标签: matlab plot int64


【解决方案1】:

我找到了一个目前可行的解决方法。我获取了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 值映射到其键的表。 感谢您的所有 cmets。

【讨论】:

    猜你喜欢
    • 2014-01-23
    • 2013-07-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多