在 Python 中绘制方波
Plot Square Wave in Python
我目前正在使用 numpy 和 pylot 在 python 中绘制方波。
如何绘制多个 T 周期的方波函数?
我目前有:
from scipy import signal
import numpy as np
from scipy.fftpack import fft
#Initialize Parameters
p_0 = 2
A = np.sqrt(1/(2*p_0))
t = [-A,A]
plt.plot(t,[A,A])
plt.show()
这只是给了我一条直线。
结局就是对方波函数取傅里叶变换
下面这段代码可以解决问题:
import math, numpy
from matplotlib import pyplot as plt
x = numpy.linspace(0, 10, 1000)
y = numpy.array([1 if math.floor(2 * t) % 2 == 0 else 0 for t in x])
plt.plot(x,y)
plt.show()
- If
math.floor(2 * t) % 2 == 0
returns True
plot 1
else plot 0
.
输出:
您可以使用 scipy.signal
中的 square
函数
from scipy import signal
import matplotlib.pyplot as plt
t = np.linspace(0, 1, 500, endpoint=False)
plt.plot(t, signal.square(2 * np.pi * 5 * t),'b')
plt.ylim(-2, 2)
plt.grid()
plt.show()
我目前正在使用 numpy 和 pylot 在 python 中绘制方波。 如何绘制多个 T 周期的方波函数?
我目前有:
from scipy import signal
import numpy as np
from scipy.fftpack import fft
#Initialize Parameters
p_0 = 2
A = np.sqrt(1/(2*p_0))
t = [-A,A]
plt.plot(t,[A,A])
plt.show()
这只是给了我一条直线。 结局就是对方波函数取傅里叶变换
下面这段代码可以解决问题:
import math, numpy
from matplotlib import pyplot as plt
x = numpy.linspace(0, 10, 1000)
y = numpy.array([1 if math.floor(2 * t) % 2 == 0 else 0 for t in x])
plt.plot(x,y)
plt.show()
- If
math.floor(2 * t) % 2 == 0
returnsTrue
plot1
else plot0
.
输出:
您可以使用 scipy.signal
square
函数
from scipy import signal
import matplotlib.pyplot as plt
t = np.linspace(0, 1, 500, endpoint=False)
plt.plot(t, signal.square(2 * np.pi * 5 * t),'b')
plt.ylim(-2, 2)
plt.grid()
plt.show()