當前位置: 首頁>>代碼示例 >>用法及示例精選 >>正文


Python SciPy signal.oaconvolve用法及代碼示例


本文簡要介紹 python 語言中 scipy.signal.oaconvolve 的用法。

用法:

scipy.signal.oaconvolve(in1, in2, mode='full', axes=None)#

使用 overlap-add 方法對兩個 N 維數組進行卷積。

使用 overlap-add 方法對 in1 和 in2 進行卷積,輸出大小由 mode 參數確定。

對於大型數組 (n > ~500),這通常比 convolve 快得多,當一個數組比另一個數組大得多時,通常比 fftconvolve 快得多,但當隻需要幾個輸出值或當數組的形狀非常相似,並且隻能輸出浮點數組(int 或對象數組輸入將被強製轉換為浮點數)。

參數

in1 array_like

第一個輸入。

in2 array_like

第二輸入。應該具有與 in1 相同的維數。

mode str {‘full’, ‘valid’, ‘same’},可選

指示輸出大小的字符串:

full

輸出是輸入的完全離散線性卷積。 (默認)

valid

輸出僅包含那些不依賴零填充的元素。在 ‘valid’ 模式中,in1 或 in2 在每個維度上都必須至少與另一個一樣大。

same

輸出與 in1 大小相同,以 ‘full’ 輸出為中心。

axes int 或 數組 of ints 或 None,可選

計算卷積的軸。默認值是在所有軸上。

返回

out 數組

一個 N 維數組,包含 in1 與 in2 的離散線性卷積的子集。

注意

參考

[1]

維基百科,“Overlap-add_method”。 https://en.wikipedia.org/wiki/Overlap-add_method

[2]

理查德·G·裏昂。了解數字信號處理,第三版,2011 年。第 13.10 章。國際標準書號 13:978-0137-02741-5

例子

將 100,000 個樣本信號與 512 個樣本濾波器進行卷積。

>>> import numpy as np
>>> from scipy import signal
>>> rng = np.random.default_rng()
>>> sig = rng.standard_normal(100000)
>>> filt = signal.firwin(512, 0.01)
>>> fsig = signal.oaconvolve(sig, filt)
>>> import matplotlib.pyplot as plt
>>> fig, (ax_orig, ax_mag) = plt.subplots(2, 1)
>>> ax_orig.plot(sig)
>>> ax_orig.set_title('White noise')
>>> ax_mag.plot(fsig)
>>> ax_mag.set_title('Filtered noise')
>>> fig.tight_layout()
>>> fig.show()
scipy-signal-oaconvolve-1.png

相關用法


注:本文由純淨天空篩選整理自scipy.org大神的英文原創作品 scipy.signal.oaconvolve。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。