gnuplot:如何获得正确的数量级?

2024-05-04

这个问题/问题可能与这个话题 https://stackoverflow.com/questions/55130265/inconsistency-with-gnuplot-format-specifiers-t-and-t.

如果您输入:

print log10(1e7)你会得到7.0.

print int(log10(1e7))你会得到7.

但是,如果您输入

print log10(1e6)你会得到6.0.

print int(log10(1e6))你会得到5.

这些可能是与以下相关的舍入误差log10并且无法(?)避免。

因为如果你输入

print sprintf("%.20e",log10(1e6)) gives 5.99999999999999911182e+00

print sprintf("%.20e",log10(1e7)) gives 7.00000000000000000000e+00

您可以将其扩展并总结为一个图: 代码:

### power problem in gnuplot
reset session
set colorsequence classic
set key left
set samples 41

set xrange[-20:20]
plot int(log10(10**x)) w lp pt 7,\
    x w lp pt 7
### end of code

Result:

您会发现,在不规则的距离中,预期结果与获得的结果之间存在差异。

所以,我仍然缺少一个函数,它总是给我正确的数量级。也许将所有数字四舍五入到小数点后 15 位?还有其他想法吗?


假设您处理的数字不超过 12-15 位(或者正如 @Ethan 所说,在 64 位系统中超过 15-16 位数字无论如何都是无意义的),以下函数应该给出正确的整数数量级。我只是测试了几个例子并将其与其他“直接”方法进行了比较。请证明该函数正确或错误。

### get the correct power of a number with gnuplot

CorrectPower(n) = floor(log10(n*(1+1e-15)))
IncorrectPower1(n) = floor(log10(n))
IncorrectPower2(n) = floor(gprintf("%T",n))

Numbers = "1e-6 1e-4 0.001 0.01 1e-2 1000 1000000 -1e-6 -1e-9 0.99 95 990"

print " Number    cP  icP1 icP2"
do for [i=1:words(Numbers)] {
    n = word(Numbers,i)
    print \
        sprintf("%7s:%5d%5d%5d", n, CorrectPower(n), IncorrectPower1(n), IncorrectPower2(n))
}
### end of code

Result:

 Number    cP  icP1 icP2
   1e-6:   -6   -5   -6
   1e-4:   -4   -3   -4
  0.001:   -3   -2   -3
   0.01:   -2   -1   -2
   1e-2:   -2   -1   -2
   1000:    3    2    3
1000000:    6    5    6
  -1e-6:   -6   -5   -6
  -1e-9:   -9   -8   -9
   0.99:   -1    0    0
     95:    1    1    2
    990:    2    2    3

添加:对于它的价值,另一个函数可以获取正确的整数幂:

CorrectPower2(n) = int(sprintf("%.15e",n)[19:])

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

gnuplot:如何获得正确的数量级? 的相关文章

  • 如何在 gnuplot 中绘制蜘蛛图?

    假设我的数据采用以下形式 atom a b c 43 1 2 1 3 1 4 44 1 2 1 4 1 8 45 1 3 1 8 1 9 46 2 0 2 3 2 4 47 1 5 1 6 1 8 我想要一个像这样的情节http www r
  • gnuplot - 将字符串变量转换为小写

    如何在 gnuplot 中将字符串转换为小写 这是一个 gnuplot 字符串处理问题 示例 我希望在 gnuplot 脚本中检查用户输入的参数 if tolower ARG2 ohms 因此接受 ohms Ohms 或 OHMS 首选是不
  • 完全忽略Gnuplot中的某些数据行

    我想使用 Gnuplot 绘制一种数据透视图 所以我需要忽略文件中的一些数据行 我尝试了以下方法 unset key set xtics font Times Roman 5 set ytics font Times Roman 5 set
  • gnuplot 调色板,默认和定义

    一些相关的上一个问题 https stackoverflow com questions 11011566 gnuplot setting the range of a third colored point 我想采用 gnuplot 的默
  • 在 Octave 中的曲面图顶部绘制 3D 线

    我根据一些数据绘制了一个曲面 在同一个图中 我想要一条 3D 线 我有要绘制的线的 x y z 值 当我尝试在同一图中使用plot3 x y z 执行此操作时 该线始终位于表面下方 有没有什么办法解决这一问题 不知道Matlab中是否也出现
  • gnuplot:在 y 轴上绘制 4 列的文件

    我有一个包含 4 个数字 最小值 最大值 平均值 标准差 的文件 我想用 gnuplot 绘制它 Sample 24 31 29 0909 2 57451 12 31 27 2727 5 24129 14 31 26 1818 5 0419
  • 散点图对数刻度

    在我的代码中 我取两个数据系列的对数并绘制它们 我想通过将 x 轴的每个刻度值提高到 e 次方 自然对数的反对数 来更改它 换句话说 我想绘制两个系列的对数 但 x 轴为水平 这是我正在使用的代码 from pylab import sca
  • 带背景颜色的盒装标签

    如何绘制boxed label具有特定的background颜色 如图例框 你的意思是这样的吗 LABEL label in a box set obj 10 rect at 0 0 size char strlen LABEL char
  • 使用小数估计计算误差

    目前 我们正在开发的 NET 应用程序中使用 System Decimals 来表示数字 我知道小数的设计是为了最大限度地减少因舍入而产生的误差 但我也知道某些数字 例如 1 3 不能表示为小数 因此某些计算会有较小的舍入误差 我相信这个错
  • 递归地更改绘图类型(带线、带点)

    我正在尝试为基于 Julia 的 gnuplot 创建一个包装器来自动化我的绘图 我的目标是为 Julia 提供要绘制的文件名 要使用的线条样式类型以及要绘制的列 例如 如果我有文件test1 and test2 都有 3 列和标题 tim
  • GNUPLOT 绘制 5 天的财务周

    我已经寻找了一段时间 以找出如何从财务图中删除一周中的几天 但没有成功 我需要该图仅包含一周中的几天并完全忽略周末 以便财务图表中没有 2 天的差距 我有 CSV 格式的开盘 低 收盘 高数据 并且缺少周末数据 它绘制得很好 但我找不到如何
  • gnuplot任意标注x轴

    我有以下 gnuplot 数据文件 1 0 5 0 9 2 0 1 0 5 3 0 7 0 4 其中第一列是 x 轴 第 2 3 列是两个不同的图表 x 轴坐标始终为自然数 它们代表单词在句子中的位置 第 2 列和第 3 列只是对句子中单词
  • Gnuplot:具有置信区间的线点

    我有以下数据 我想绘制一个图表 显示所有 x 与线 线点 连接的平均值 并显示所有置信区间 ci lower ci upper 我设法使用 2 个图来做到这一点 set xrange 0 1100000 set yrange 0 5000
  • 如何使用 python 将对数概率转换为 0 到 1 值之间的简单概率

    我使用高斯混合模型进行说话人识别 我使用此代码来预测每个语音剪辑的说话者 for path in file paths path path strip print path sr audio read source path vector
  • 以不同的采样率绘制两个函数

    我想绘制两个函数 sin x 和采样并量化的 sin x 脚本很简单 set xtic 1 set ytic 1 f1 x sin x 16 2 pi 8 round x x floor x lt 0 5 floor x ceil x pl
  • gnuplot:字体较小的字幕

    有人知道如何在 gnuplot 中插入较小字体的字幕吗 目前 我创建字幕的方式是使用 n在标题中 另外 我希望字幕的字体较小 提前致谢 这至少适用于 postscript 终端 出于某种原因x11不想缩放我的字体 也许这是一个错误 set
  • 如何在 Gnuplot 中将线条样式设置为多个绘图的默认样式?

    我想使用 gnuplot 创建绘图 所有图中的线宽均应为 3 如果我只对一个地块执行此操作 则可以通过以下方式完成 set style line 1 linewidth 3 有什么办法可以默认全局执行此操作吗 您可以指定 set termi
  • GNUPLOT:尝试提高质量

    如何提高 gnuplot 的质量 看起来这是一个非常低分辨率的图像 这是我正在使用的文件的内容 linkage plot set terminal pdf set out linkage pdf set title Distribution
  • 字符串的 gnuplot 图

    是否可以传递字符串中的绘图数据 我的意思是做这样的事情 plot 09 13 2010 2263 80 09 14 2010 2500 using 1 2 with lines 可以做类似的事情 set xdata time set tim
  • 用于时间线数据的类似 gnuplot 的程序

    我正在寻找一个类似 gnuplot用于在时间轴中绘制数据图表的程序 类似 gnuplot 在 Linux 上运行 命令行功能 GUI 对我帮助不大 可编写脚本的语法 输出为 jpg png svg 或 gif 输出应该是这样的 set5 s

随机推荐

  • H2 中的 IF 函数用于 MySQL 兼容性

    我正在使用 H2 具有 MySQL 兼容模式 针对我们使用 MySQL 的软件编写一些自动化测试 不幸的是 H2 似乎没有IF我们的许多查询都使用该函数 除了使用 DECODE 之类的东西重写我们的应用程序查询之外 它们是创建 if 函数
  • Google Places API 上的寻呼返回状态 INVALID_REQUEST

    我正在使用 Google Place API 进行地点搜索 https developers google com places documentation search https developers google com places
  • 实体框架不查询派生类 - DbOfTypeExpression 中的错误

    我有一个基类和两个派生类 每个派生类都实现相同的类型作为属性 唯一的区别是属性名称 遗憾的是我对类设计没有太大影响 gt 它们是从 wsdl 文件生成的 然后我在 BaseType 上有一个属性来封装公共属性 计划是在我的网络视图等中使用此
  • 如何在 Angular 6 中过滤复杂结构化的 Json 数据

    我有一个复杂的结构化 json 数据 需要在我的 Angular 6 应用程序中应用高级过滤 JSON 数据 StudentId 1 StudentName Student1 Sex M Programs StudentId 1 Progr
  • 将 ActiveX Com 组件与 Node.js 一起使用。是否可以

    有没有办法将任何ActiveX com组件与nodejs一起使用 实际上 我永远不需要这个 但我在 Windows 上运行 nodejs 并尝试发送 ping 请求而不分叉新进程 Windows 不存在这样的模块 由于存在一些 Active
  • 从命令行将绑定或参数传递给 ERB

    我最近一直在从命令行使用 erb 我想制作一个非常简单的 erb 模板 例如以下内容 Hello My name is I hope your day is 如果我跑的话这有效 erb T thatfile erb 我想做的是name an
  • 每次更改工作表时运行宏

    我对宏还很陌生 每次更新 更改或其他任何操作时 我都需要在工作表上运行一些代码 这是我需要运行的代码 我怎样才能做到这一点 Sub UnMergeFill Dim cell As Range joinedCells As Range For
  • 分割具有最大字符数限制的字符串

    我试图将一个字符串拆分为许多字符串 列表 每个字符串都有最大字符数限制 假设我有一个 500 个字符的字符串 并且我希望每个字符串最多有 75 个字符 那么就会有 7 个字符串 而最后一个字符串不会有完整的 75 个字符 我尝试了在 sta
  • 如何处理 UICollectionView CompositionalLayout 中的空项目部分

    我正在尝试使用具有多个部分的组合布局制作集合视图 但如果部分中有空项目我该如何处理 如果项目为空 我不想显示该部分 UICollectionViewCompositionalLayout section env gt NSCollectio
  • 获取字典中相似值的键的最有效方法

    我有一个对象字典 I have thousands of objects in my real world scenario dic k1 obj1 k2 obj2 k3 obj3 keys are string objs are MyOb
  • 带有输出文件和屏幕输出的 sqlcmd

    我使用 sqlcmd 执行一些命令行批处理 bat 如下所示 sqlcmd i Scripts STEP01 sql o PROCESS log S MYSERVER E d MYDATABASE 我需要一个输出文件 当前有效 以及通过屏幕
  • 零填充缓冲区/文件的 CRC32 计算

    如果我想计算大量连续零字节的 CRC32 值 在给定零运行长度的情况下 是否可以使用恒定时间公式 例如 如果我知道我有 1000 个字节全部用零填充 有没有办法避免 1000 次迭代的循环 只是一个例子 对于这个问题 实际的零数量是无限的
  • 我们可以从视图调用控制器的方法(理想情况下我们从助手调用)吗?

    在 Rails MVC 中 您可以从视图调用控制器的方法 因为方法可以从助手调用 如果是 怎么办 答案如下 class MyController lt ApplicationController def my method Lots of
  • 许可证密钥模式检测? [关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 这不是真实情况 请忽略您可能认为适用的法律问题 因为它们并不适用 假设我有一组 200 个已知的有效许可证密钥 用于假设的软件许可算法
  • PyGTK+3(PyGObject)创建屏幕截图?

    我过去 3 天在 google 上搜索 如何使用 PyGTK 3 创建屏幕截图 有关于 pyqt pygtk 2 wx 和 PIL 的 gallizion 教程 顺便说一句 我不需要 scrot imlib2 imagemagick 等外部
  • 使 C# 源代码作为脚本运行?

    我正在编写一些脚本 我发现有时更多的功能会更好 就像持续尝试以 1 秒延迟删除文件并使其可移植的能力一样 我今天花了一些时间将 bat 脚本翻译为 bash 我知道我可以使用 php 或 python 但我非常喜欢静态 编译时间检查 有没有
  • 有可能吗?:行为 t [行为 t a] -> 行为 t [a]

    有没有办法有一个Behavior t a 其中 a 在时间 t 的值是 a 中包含的值Behavior t Behavior t a 在时间 t 即 具有以下类型的函数 Behavior t Behavior t a gt Behavior
  • 两种 SQL 连接符号有什么区别?

    SQL 1 select from t1 join t2 on t1 f1 t2 f2 SQL 2 select from t1 t2 where t1 f1 t2 f2 他们返回的结果是相同的 它们之间有什么区别吗 例如 DBMS 如何运
  • 在 C# WPF 或 Windows 窗体应用程序中使用 DirectX c++ DLL

    我用c 编写了一个DX11渲染器 我现在正在寻找一种方法来实现它的编辑器 GUI 由于我非常习惯 Windows 窗体和 WPF C 应用程序 因此我正在考虑将渲染器放入 dll 中 从 C 应用程序加载 dll 并使用它绘制到表单的定义部
  • gnuplot:如何获得正确的数量级?

    这个问题 问题可能与这个话题 https stackoverflow com questions 55130265 inconsistency with gnuplot format specifiers t and t 如果您输入 pri