如何绘制两个不同频率的正弦波之和

2024-06-30 08:51:46 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图在python中绘制两个不同频率的正弦波之和-我已经在excel中完成了这项工作,现在想在python中复制它。在

谢谢。在

import numpy as np
import matplotlib.pyplot as plot

orbitperiod = .36
lumorbitperiod = 3.25
synodicperiod = 1/abs((1/orbitperiod)-(1/lumorbitperiod))
highesthigh = 3112
lowesthigh = 2709
highestlow = 2023
lowestlow = 1665
halfofhighrange = abs(highesthigh-highestlow)/2
halfoflowrange = abs(highestlow-lowestlow)/2
lowmean = (highestlow+lowestlow)/2

time        = np.arange(0, 5, 0.01);

#plot first sine wave
plot.plot(time*365*orbitperiod, \
      (np.sin(time*np.pi*2)*halfoflowrange+lowmean))

#plot second sine wave
plot.plot(time*365*synodicperiod, \
      (np.sin(time*np.pi*2)*halfofhighrange+halfofhighrange))

我想要一张正弦波之和的图,而不是两个分开的正弦波。在


Tags: importtimeplotasnpabs正弦波highesthigh
1条回答
网友
1楼 · 发布于 2024-06-30 08:51:46

对于这两个正弦函数,您可以保持time坐标相同,但可以水平拉伸正弦波sine(2*Pi*time / period)

import numpy as np
import matplotlib.pyplot as plot

orbitperiod = .36
lumorbitperiod = 3.25
synodicperiod = 1/abs((1/orbitperiod)-(1/lumorbitperiod))
highesthigh = 3112
lowesthigh = 2709
highestlow = 2023
lowestlow = 1665
halfofhighrange = abs(highesthigh-highestlow)/2
halfoflowrange = abs(highestlow-lowestlow)/2
lowmean = (highestlow+lowestlow)/2

time = np.arange(0, 2, 0.01) ;

sine_one = np.sin(time*np.pi*2 / orbitperiod)*halfoflowrange+lowmean
plot.plot(time * 365, sine_one, label='first Sine')

sine_two = np.sin(time*np.pi*2 / synodicperiod)*halfofhighrange+halfofhighrange
plot.plot(time * 365, sine_two, label='Second Sine')

sine_sum = sine_one + sine_two 
plot.plot(time * 365 , sine_sum, label='Summed Sines')
plot.legend(); plot.show()

结果如下: sine waves

相关问题 更多 >