algorithm - 将一个数谱转换为另一个数谱

标签 algorithm math

我正在尝试想出一个公式,将一个数谱转换为另一个数谱。 例如:

0 - 800-1 - 1

其中 0 = -1200 = -0.5400 = 0600 = 0.5800 = 1,依此类推。

对我来说困难的部分似乎是负范围。

最佳答案

如果您的范围是a0, a1b0, b1,那么您希望x 转到

((x-a0)/(a1-a0)) * (b1-b0) + b0

基本上,(x-a0) 是您距离第一个范围下限的距离,(x-a0)/(a1-a0) 除以范围宽度,因此数字现在标准化为 [0, 1]。之后,我们乘以 (b1-b0) 将范围扩大到新的比例,并添加 b0 将其移动。

例如:

>>> a0, a1 = 0.0, 800.0
>>> b0, b1 = -1.0, 1.0
>>> 
>>> x = 400 # should go to 0
>>> x-a0
400.0
>>> (x-a0)/(a1-a0)
0.5
>>> (x-a0)/(a1-a0) * (b1-b0)
1.0
>>> (x-a0)/(a1-a0) * (b1-b0) + b0
0.0
>>> x = 0 # should go to -1
>>> (x-a0)/(a1-a0) * (b1-b0) + b0
-1.0
>>> x = 800 # should go to 1
>>> (x-a0)/(a1-a0) * (b1-b0) + b0
1.0

关于algorithm - 将一个数谱转换为另一个数谱,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12413829/

相关文章:

javascript - 通过某种合并算法从数组中删除重复对象

C算术溢出32位和64位之间的区别?

language-agnostic - 生成随机 6 个字符的字符串

algorithm - 我们能说任何线段树都是平衡的吗?

python - 在 Python 字典中, ( (j*5)+1 ) % 2**i 如何循环遍历所有 2**i

c - 周期最长的随机数算法是什么?

algorithm - fminunc 的 Matlab 函数梯度

Javascript 数学在函数内部是不同的

algorithm - 快速排序最坏情况运行时间的递归

algorithm - 多个列表的排序组合