如何绘制较长时间的正弦曲线

skm*_*skm 3 python numpy matplotlib

我是 Python 新手,尝试在 x 轴上绘制持续时间为 300 秒的正弦曲线,但我只能在短时间内绘制正确的正弦曲线。

微量元素:

import numpy as np
import matplotlib.pyplot as plt

in_array = np.linspace(0, 2*np.pi, 300)
out_array = np.sin(in_array)

print("in_array : ", in_array)
print("\nout_array : ", out_array)

# red for numpy.sin()
plt.plot(in_array, out_array, color = 'red')
plt.title("numpy.sin()")
plt.xlabel("X")
plt.ylabel("Y")
plt.show()
Run Code Online (Sandbox Code Playgroud)

上面的代码能够绘制所需的正弦曲线,如下所示:

在此输入图像描述

如果我将np.linspace上面代码中的行更改为

in_array = np.linspace(0, 6*np.pi, 300)
Run Code Online (Sandbox Code Playgroud)

...然后我就能够得到正弦曲线的3个周期,这也可以。

在此输入图像描述

问题:如果我尝试使用上面的代码在 x 轴上绘制 300 秒(大约)的正弦曲线in_array = np.linspace(0, 90*np.pi, 300),则曲线包含不同的幅度(如下所示),为什么以及如何纠正它?

在此输入图像描述

Mar*_*a K 8

在您提到的所有情况下,都会生成相同数量的 x 轴点。

当间隔较短且有 300 个点时,您会得到 的更密集表示sin,即每个局部最大值/最小值周围有足够的点来正确绘制极值。在第一个示例中,每 0.02 弧度有 1 个 x 轴点。

在上一个例子中,您仍然得到 300 分,但区间更宽。这意味着每 0.95 弧度大约有 1 个点,有时这些点不会落在极值附近,因此不会绘制它们,因此振幅明显不同。

您可以向 x 轴添加更多点(使它们更频繁)。

例如,900分看起来又不错:

in_array = np.linspace(0, 90*np.pi, 900)
out_array = np.sin(in_array)

plt.plot(in_array, out_array, color = 'red')
plt.title("numpy.sin()")
plt.xlabel("X")
plt.ylabel("Y")
plt.show()
Run Code Online (Sandbox Code Playgroud)

输出: 在此输入图像描述