【问题标题】:mapping numbers on a scale [closed]按比例绘制数字[关闭]
【发布时间】:2019-08-14 08:58:30
【问题描述】:

我有一个最大为 20000 的数字数组,我正在尝试为这些数字分配权重:

数字越接近 0,权重就越高。我的问题是我试图让它数字越大,重量差异应该越小,例如1-100之间的重量差异可能是1.5,但100-10000之间的差异可能是0.5 .

我认为这是一个对数刻度,不是吗?我的数学一点都不好。这不是家庭作业问题,学校早就放学了,只是一个爱好问题。

我尝试过的是,我通过在 25000-value 上求平方根将权重映射到我的数字数组,但这不是我想要的。我只是把它放进去,这样我就可以看到权重的梯度回来了,而且数字太大了,理想情况下,我希望权重在 0.01 到 3 之间。

我没有任何代码可显示,任何帮助将不胜感激。

【问题讨论】:

  • 张贴一些图表的样子,给我们一些例子。向我们展示您拥有的代码。

标签: c# mapping logarithm


【解决方案1】:

虽然您的问题并不是真正的 C# 问题,但我可能会为您提供答案。 要使用对数间距缩放值,可以使用以下公式:

你说你的最大值是 20000,你想将值从 0.01 缩放到最大值 3,所以我们需要插入最大值并缩放我们的公式:

// 编辑: 值也应该颠倒,所以从 1 中减去对数:

这为x 的值提供以下值f(x)

f(0) = 3
f(1) = 2.79
f(10) = 2.27
f(100) = 1.60
f(1000) = 0.91
f(10000) = 0.21
f(20000) = 0

这对你的情况就足够了吗?

【讨论】:

  • 我将编辑我的帖子。
猜你喜欢
  • 1970-01-01
  • 2013-12-13
  • 1970-01-01
  • 2017-03-26
  • 1970-01-01
  • 1970-01-01
  • 2019-02-10
  • 2012-10-01
  • 2012-12-12
相关资源
最近更新 更多