我想将跨越通常的 y 方向范围从 -1 到 1 的正弦波拟合到 3 到 13 的范围内(例如)。有没有一个简单的命令可以做到这一点?
你真的不需要一个函数来做到这一点,只需要一些基本的代数。
首先,您想通过平均预期的上限和下限来获得转换后的正弦波的中线。在你的例子中,它是 8 因为
(3+16)/2 = 8
.
接下来,您将要找到变换后的正弦波的幅度。您可以通过从上限中减去中线来做到这一点。在您的示例中,它是
5
因为 13-8 = 5
.
有了这些值,您只需将正弦函数的输出乘以您的振幅,然后加上中线。在您的示例中,您想使用
5*sin(x)+8
。如果您想对此进行校对,只需将其插入 Desmos 或任何其他图形计算器即可。
您最初的问题没有指定语言,但这里有一个 Python 示例,可以轻松翻译成任何其他语言:
import math
def transformedSine(upper, lower, input):
midline = (upper + lower) / 2
return (upper-midline) * math.sin(input) + midline;