Python 用振幅、频率和相位角绘制正弦波

Python 用振幅、频率和相位角绘制正弦波,python,numpy,matplotlib,qtgui,Python,Numpy,Matplotlib,Qtgui,我试图制造这种类型的罪恶波 f(x) = A*sin(2*pi*f*x + phi) 其中A为振幅,f为频率,φ为相位角。我知道这样画简单的正弦曲线: def plot(self): Amplitude = 1.5 Frequency = 0.5 Phase = 2.6 ax = self.figure.add_subplot(111) X = np.linspace(-np.pi, np.pi, 256,endpoint=True) S = n

我试图制造这种类型的罪恶波

f(x) = A*sin(2*pi*f*x + phi)
其中A为振幅,f为频率,φ为相位角。我知道这样画简单的正弦曲线:

def plot(self):
    Amplitude = 1.5
    Frequency = 0.5
    Phase = 2.6
    ax = self.figure.add_subplot(111)
    X = np.linspace(-np.pi, np.pi, 256,endpoint=True)
    S = np.sin(X)
    ax.hold(True)
    ax.plot(X, S, color="blue", linewidth=1.0, linestyle="-")
    xlim(0.0,2.0)
    xticks(np.linspace(0,2,5,endpoint=True))
    ylim(-1.5,1.5)
    yticks(np.linspace(-1.5,1.5,7,endpoint=True))
    self.canvas.draw()
我正在使用QtGui绘制它。请帮我找到绘制正弦波的正确方法

我有一个想法,我需要修改这两行:

X = np.linspace(-np.pi, np.pi, 256,endpoint=True)
S = np.sin(X)
我的尝试:

def plot(self):
    Amplitude = 1.5
    Frequency = 0.5
    Phase = 2.6

    fs = 44100
    T = np.arange(-0.002, .002, 1.0/fs)

    ax = self.figure.add_subplot(111)

    X = Amplitude*np.sin(2*np.pi*Frequency*T + Phase)

    ax.hold(True)
    ax.plot(T, X, color="blue", linewidth=1.0, linestyle="-")
    xlim(0.0,2.0)
    xticks(np.linspace(0,2,5,endpoint=True))
    ylim(-1.5,1.5)
    yticks(np.linspace(-1.5,1.5,7,endpoint=True))
    self.canvas.draw()
但现在没有显示为正弦波。请帮我找出错误

沿着X轴,它从0到2,像这样0,0.5,1.0,1.5,2.0


沿着Y轴,它从-1.5到1.5,像这样-1.5,-1.0,-0.5,0.0,0.5,1.0,1.5

你试过改变什么吗?@JRichardSnape是的,我试过很多方法,但有一次还是出现了一些错误:(您的x限制设置为0到2之间,但您的实际x值在-0.002到0.002范围内。@通过对称性,这fs是对的?fs=44100您的问题在这里是数学问题,而不是编程问题。您的x轴是时间。您试图显示的音频信号我猜是44.1kHz,这是标准音频采样f。只需扩展T的范围-使用np.arange(0,2,1.0/fs)。当f=0.5 Hz且计算/绘制2秒时,应能看到一个完整的波