【问题标题】:Inverse correlation between two scales两个尺度之间的反相关
【发布时间】:2018-01-12 12:44:43
【问题描述】:

我有一个从 1 开始的数字范围,以 1 递增到上限,上限可能在 100 到 200 之间。

我正在尝试创建一个函数,将这些数字转换为 0.5 到 20 的范围,其中 one 始终 = 20,最大值始终等于 0.5,其余数字在两个。

假设从一到最大的数字在 A 列中,我已经设法将旧比例转换为新比例:

=(((A1-1)*(20 - 0.5))/(MAX(A:A) - 1))+0.5

可以表示为(((OldVal - OldMin) * (NewMax - NewMin)) / (OldMax - OldMin)) + NewMin

这可以正确转换尺度大小

200 20
199 19.90201005
198 19.8040201
197 19.70603015
196 19.6080402
195 19.51005025
194 19.4120603
    etc...
8   1.185929648
7   1.087939698
6   0.989949749
5   0.891959799
4   0.793969849
3   0.695979899
2   0.59798995
1   0.5

我现在需要做的是反转比例,使最大值(100 到 200)= 0.5,最小值(1)= 20。

如何做到这一点,记住最大值是动态的并且可以在 100 到 200 之间的任意值?是否有另一种方法可以解决创建逆相关的原始问题?

理想情况下,如果有一些聪明的数学技巧(你可能猜到我不是数学男孩!)我希望能够在不先计算整个序列的情况下找出序列中的任何数字,例如 returnValue = someFunction(120) ,尽管这不是必需的。

非常感谢。

【问题讨论】:

  • 如果可以的话,您可以使用 VBA 轻松完成这项工作吗?
  • 是的,我想我可以将这些值放入几个数组中并反转其中一个,但理想情况下我正在寻找一个更数学的解决方案。我的直觉告诉我,一定有一些简单的方程式可以做到这一点。不过,感谢您将想法作为后备。

标签: excel math excel-formula


【解决方案1】:

假设线性插值,您可以使用y = mx + b,其中x 是您的输入(在这种情况下,1 到 100 到 200 之间的某个未知值),y 是您的输出(在这种情况下,20 到0.5),斜率(m)和截距(b)随着x的上限变化而动态确定。

我将 100 到 200 之间的未知值定义为 z

我们有两个方程和两个未知数。 (记住z 是已知的,只是它是动态的)。这是方程组:

20 = m*1 + b
0.5 = m*z + b

一些线性代数:

19.5 = m*(1-z)
m = 19.5/(1-z)

还有:

20*z = m*z + b*z (the equation '20 = m*1 + b` multiplied by 'z')
0.5 = m*z + b
20*z - 0.5 = b*(z-1)
b = (20*z - 0.5)/(z-1)

所以你将两者联系起来的方程式是:

y = 19.5*x/(1-z) + (20*z - 0.5)/(z-1)

同样,z 是 100 到 200 之间的数字。

【讨论】:

  • @Absinthe 四年级代数:P 谢谢哈哈
【解决方案2】:

您可以通过在 C 列输入以下公式来反转/反转 B 列中数据的顺序:

=INDEX(B:B,COUNTA(B:B)+1-ROW())

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-04-11
    • 2012-12-29
    • 2018-09-27
    • 2021-12-29
    • 2018-11-04
    相关资源
    最近更新 更多