【问题标题】:Sine Wave generation - get Y axis正弦波生成 - 获取 Y 轴
【发布时间】:2018-02-10 03:44:52
【问题描述】:

我正在尝试创建一个无限循环,该循环将输出正弦波的 Y 轴,并希望使用指定波幅、频率和分辨率的变量。其中频率是一秒钟内完整正弦波的数量,如交流电频率。

我正在尝试做这样的事情:

#!/usr/bin/python
from time import sleep
from math import sin

amplitude=100
frequency=0.01
resolution=0.01

while True:
    y = <Sine wave math>
    print str(y)
    sleep(resolution)

我需要数学方面的帮助并正确解决问题。

【问题讨论】:

标签: python trigonometry


【解决方案1】:

这可能不是解决数学问题的最佳地点,但并不难,所以你去吧。

sin(x) 是一个产生波浪的函数。它的周期或获得全波的距离是 2 * pi。要更改周期以匹配您的频率,您必须将 sin(x) 中的 x 乘以等于 2 * pi * f 的常数,或者得到 sin(2 * pi * f * x)。

要更改波的幅度,请将其乘以幅度。所以如果你有振幅 A,你想要 A * sin(x)

我不知道你所说的频率。

总的来说,你想要的是 A * sin(2 * pi * x)。

【讨论】:

    【解决方案2】:

    经过大量研究和调整,这就是我的想法:

    #!/usr/bin/python
    from time import time,sleep
    from math import sin,pi
    
    frequency = 1
    amplitude = 100
    resolution = 0.01
    
    def sineCalc(time,frequency,amplitude):
        factor = pi * frequency
        sin_seg = sin(time * factor)
        value = amplitude * sin_seg
        return value
    
    while True:
        #Get y value based on current time.
        value = sineCalc(time(),frequency,amplitude)
        print str(value)
        sleep(resolution)
    

    【讨论】:

    • 您可以将其缩短为return amplitude * sin(time * pi * frequency)。如需完整说明,您可以添加phase and offsetreturn amplitude * sin(time * pi * frequency + phase) + offset。 cos(x) 例如是相移 sin(x)。
    猜你喜欢
    • 2012-07-11
    • 1970-01-01
    • 2022-12-25
    • 2016-02-21
    • 2015-02-01
    • 2018-10-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多