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


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


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

用法:

scipy.signal.upfirdn(h, x, up=1, down=1, axis=-1, mode='constant', cval=0)#

上采樣、FIR 濾波器和下采樣。

參數

h array_like

一維 FIR(finite-impulse 響應)濾波器係數。

x array_like

輸入信號數組。

up 整數,可選

上采樣率。默認值為 1。

down 整數,可選

下采樣率。默認值為 1。

axis 整數,可選

沿其應用線性濾波器的輸入數據數組的軸。過濾器沿該軸應用於每個子陣列。默認值為 -1。

mode str,可選

要使用的信號擴展模式。套裝{"constant", "symmetric", "reflect", "edge", "wrap"}對應於提供的模式numpy.pad."smooth"通過基於數組兩端最後 2 個點的斜率進行擴展,實現平滑擴展。"antireflect""antisymmetric"是反對稱版本的"reflect""symmetric".模式“line”根據由沿線的第一個點和最後一個點定義的線性趨勢擴展信號axis.

cval 浮點數,可選

mode == "constant" 時使用的常量值。

返回

y ndarray

輸出信號數組。除沿軸外,尺寸將與 x 相同,它將根據 h、up 和 down 參數改變大小。

注意

該算法是 Vaidyanathan 文本 [1](圖 4.3-8d)第 129 頁所示框圖的實現。

使用零插入按因子 P 進行上采樣、長度為 N 的 FIR 濾波以及按 Q 因子進行下采樣的直接方法是每個輸出樣本 O(N*Q)。這裏使用的多相實現是 O(N/P)。

參考

[1]

P. P. Vaidyanathan,多速率係統和濾波器組,Prentice Hall,1993 年。

例子

簡單的操作:

>>> import numpy as np
>>> from scipy.signal import upfirdn
>>> upfirdn([1, 1, 1], [1, 1, 1])   # FIR filter
array([ 1.,  2.,  3.,  2.,  1.])
>>> upfirdn([1], [1, 2, 3], 3)  # upsampling with zeros insertion
array([ 1.,  0.,  0.,  2.,  0.,  0.,  3.])
>>> upfirdn([1, 1, 1], [1, 2, 3], 3)  # upsampling with sample-and-hold
array([ 1.,  1.,  1.,  2.,  2.,  2.,  3.,  3.,  3.])
>>> upfirdn([.5, 1, .5], [1, 1, 1], 2)  # linear interpolation
array([ 0.5,  1. ,  1. ,  1. ,  1. ,  1. ,  0.5])
>>> upfirdn([1], np.arange(10), 1, 3)  # decimation by 3
array([ 0.,  3.,  6.,  9.])
>>> upfirdn([.5, 1, .5], np.arange(10), 2, 3)  # linear interp, rate 2/3
array([ 0. ,  1. ,  2.5,  4. ,  5.5,  7. ,  8.5])

將單個濾波器應用於多個信號:

>>> x = np.reshape(np.arange(8), (4, 2))
>>> x
array([[0, 1],
       [2, 3],
       [4, 5],
       [6, 7]])

沿 x 的最後一個維度應用:

>>> h = [1, 1]
>>> upfirdn(h, x, 2)
array([[ 0.,  0.,  1.,  1.],
       [ 2.,  2.,  3.,  3.],
       [ 4.,  4.,  5.,  5.],
       [ 6.,  6.,  7.,  7.]])

沿 x 的第 0 維應用:

>>> upfirdn(h, x, 2, axis=0)
array([[ 0.,  1.],
       [ 0.,  1.],
       [ 2.,  3.],
       [ 2.,  3.],
       [ 4.,  5.],
       [ 4.,  5.],
       [ 6.,  7.],
       [ 6.,  7.]])

相關用法


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