簡體   English   中英

如何在python中表示方波以及如何對其進行卷積?

[英]How to represent a square wave in python and how to convolve it?

我試圖將方波與其自身卷積不止一次,並查看生成的圖形。 我知道如何用手進行卷積,但是我沒有使用Python進行信號處理的經驗。 所以我的問題是:

  1. 如何用Python表示信號? 例如:

x(t)= 1,0≤t≤1

x(t)= 0,否則

  1. 我怎樣才能使這個方波自身卷積?

到目前為止,我必須使用numpy的內置卷積方法。 但是問題是我被困在代表這個方波。

創建合適的0-1數組的一種方法是np.fromfunctionnp.fromfunction傳遞在wave中返回True的函數。 轉換為float會得到0-1數組。

對於此說明,最好將波定位在陣列的中間,以避免與卷積相關的邊界效應。 使用mode='same'可以將所有曲線繪制在一起。 同樣,不要忘了將convolve的輸出除以sample_rate ,否則每次卷積時, convolve的輸出將與之成比例地增長。

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()

卷積

從數學上講,它們被稱為基數B樣條Irwin-Hall分布的密度。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM