如何在python中表示方波以及如何卷积它?
我试图不止一次地将一个方波与它自身卷积起来,然后看到结果图。我知道如何用手进行卷积,但我对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数组 对于这个说明,最好将波定位在阵列的中间,避免与卷积相关的
到目前为止,我必须使用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)