如何在python中表示方波以及如何卷积它?

如何在python中表示方波以及如何卷积它?,python,numpy,signal-processing,convolution,Python,Numpy,Signal Processing,Convolution,我试图不止一次地将一个方波与它自身卷积起来,然后看到结果图。我知道如何用手进行卷积,但我对Python的信号处理没有经验。因此,我的问题是: 如何用Python表示信号?例如: x(t)=1,0≤ T≤ 一, x(t)=0,否则 我怎样才能把这个方波卷积起来呢 到目前为止,我必须使用numpy内置的卷积方法;但问题是我无法表示这个方波。创建合适的0-1数组的一种方法是,向它传递一个函数,该函数在波中返回True。转换为浮点将导致0-1数组 对于这个说明,最好将波定位在阵列的中间,避免与卷积相关的

我试图不止一次地将一个方波与它自身卷积起来,然后看到结果图。我知道如何用手进行卷积,但我对Python的信号处理没有经验。因此,我的问题是:

  • 如何用Python表示信号?例如:
  • x(t)=1,0≤ T≤ 一,

    x(t)=0,否则

  • 我怎样才能把这个方波卷积起来呢

  • 到目前为止,我必须使用numpy内置的卷积方法;但问题是我无法表示这个方波。

    创建合适的0-1数组的一种方法是,向它传递一个函数,该函数在波中返回True。转换为浮点将导致0-1数组

    对于这个说明,最好将波定位在阵列的中间,避免与卷积相关的边界效应。使用
    mode='same'
    可以将所有曲线一起绘制。另外,不要忘了将
    卷积
    的输出除以
    采样率
    ,否则每次卷积都会相应地增加

    import numpy as np
    import matplotlib.pyplot as plt
    sample_rate = 100
    num_samples = 500
    wave = np.fromfunction(lambda i: (2*sample_rate < i) & (i < 3*sample_rate), (num_samples,)).astype(np.float)
    wave1 = np.convolve(wave, wave, mode='same')/sample_rate
    wave2 = np.convolve(wave1, wave, mode='same')/sample_rate
    wave3 = np.convolve(wave2, wave, mode='same')/sample_rate
    plt.plot(np.stack((wave, wave1, wave2, wave3), axis=1))
    plt.show()
    
    将numpy导入为np
    将matplotlib.pyplot作为plt导入
    抽样率=100
    样本数=500
    wave=np.fromfunction(λi:(2*采样率


    数学上,这些被称为和的密度。

    选择采样率
    S
    ,并使用离散样本表示,即
    x[k]=1
    对于
    k=1,…,(1*S)