如何用python绘制奇偶方波

时间:2016-08-11 12:31:55

标签: python numpy matplotlib

我正在使用下面的python代码,以便在一个特定位置生成方波。对于Eg:输入0,信号高1仅在0和1之间[奇数=高]。输入1,输出高1仅在1到2 [Even = High]之间。如何扩展下面的python代码,以便在整个时间跨度内产生奇数或偶数方波,而不是在单个位置。在这里,我面临着2 * n + 1公式的问题。有人可以帮助我吗?

请参考下图

import numpy as np
import matplotlib.pyplot as plt

def SquareWave(n):
    xmin=0;
    xmax=10;

    ymin=-2;
    ymax=2;

    Nx=1000;
    offset=1;

    x=np.linspace(xmin, xmax, Nx);
    y=np.sign(x+n)*offset;

    y[(x<n)]=0;
    y[(x>n+1)]=0;

    plt.plot(x, y);
    plt.axis([xmin, xmax, ymin, ymax]);
    plt.grid()
    plt.show()

Odd Wave

1 个答案:

答案 0 :(得分:1)

请勿使用;

import numpy as np
import matplotlib.pyplot as plt

def SquareWave(n,xmin=0,xmax=10,ymin=-2,Nx=1000,ymax=2,offset=1):

    x=np.sort(np.concatenate([np.arange(xmin, xmax)-1E-6,np.arange(xmin, xmax)+1E-6])) 
    #You can use np.linspace(xmin,xmax,Nx) if you want the intermediate points

    y=np.array(x+n+offset,dtype=int)%2


    plt.plot(x, y)
    plt.axis([xmin, xmax, ymin, ymax])
    plt.grid()
    plt.show()