Python scipy.signal.remez高通滤波器设计产生奇怪的传递函数

Chipmuenk

我正在尝试使用python的scipy.signal.remez函数设计等高通滤波器。但是,由此产生的传递函数对我来说很奇怪,通带中有〜15 db的峰值,而阻带衰减仅为6 dB。相应的低通设计看起来还不错(〜0.1 dB通带纹波和40 dB阻带衰减):

#!/usr/bin/env python
# -*- coding: iso-8859-15 -*-
# Minimum working example for remez (equiripple) filter designs:
from __future__ import division, print_function
import numpy as np
import scipy.signal as sig
import matplotlib.pyplot as plt
F_PB = 0.1  # corner frequency of pass band
F_SB = 0.15 # corner frequency of stop band
W_PB = 1    # weight factor for pass band 
W_SB = 1    # weight factor for stop band
L = 40 # filter order
#b = sig.remez(L, [0, F_PB, F_SB, 0.5], [1, 0], [W_PB, W_SB], Hz = 1) # low pass
b = sig.remez(L, [0, F_PB, F_SB, 0.5], [0, 1], [W_PB, W_SB], Hz = 1) # high pass
# Calculate H(w), w = 0 ... pi, 1024 Pts.
[w, H] = sig.freqz(b, worN = 1024)
# Translate w to normalized frequencies F = 0 ... 0.5:                   
F = w / (2 * np.pi)   
plt.figure(1)
plt.plot(F, 20 * np.log10(abs(H)))
plt.title(r'Magnitude transfer function in dB')
plt.show()

有人可以向我解释发生了什么吗?

基督徒,干杯

沃伦·韦克瑟

对于具有默认remez参数的高通滤波器type='bandpass',请使用奇数个抽头。用偶数的抽头remez创建II型滤波器,该滤波器的奈奎斯特频率为零。该算法很难创建具有这种约束的高通滤波器。

这是以下情况下的增益图L = 41

雷米兹结果,L = 41

使用偶数的水龙头,然后按type='hilbert'下面显示了L=40获得的结果type='hilbert'

Remez结果,L = 40,类型='hilbert'

但是请注意,这种情况下FIR滤波器为IV型-滤波器系数具有奇对称性。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何为scipy.signal.lfilter使用Python的scipy.signal.remez输出?

来自分类Dev

如何将python的scipy.signal.remez输出用于scipy.signal.lfilter?

来自分类Dev

如何在scipy.signal中制作一个低通滤波器?

来自分类Dev

设计带阻滤波器(在 SciPy firwin)

来自分类Dev

在Python中使用scipy.signal时的过滤增益问题

来自分类Dev

使用`scipy.signal.butter()`创建低通滤波器时,“阶次”和“临界频率”是什么

来自分类Dev

scipy.signal.cwt()函数的“宽度”参数的单位

来自分类Dev

Scipy与boost :: python函数

来自分类Dev

scipy.signal.lombscargle的使用

来自分类Dev

如何使用Python将scipy.signal.spectrogram反转为音频?

来自分类Dev

在哪里可以看到传递给scipy.signal.cwt的内置小波函数列表?

来自分类Dev

scipy.signal.resample表现异常

来自分类Dev

限制scipy.signal.correlate的范围

来自分类Dev

scipy.signal.step如何计算时间

来自分类Dev

了解 scipy.signal.spectrogram() 的输出

来自分类Dev

在Scipy / python中优化分段函数

来自分类Dev

Python scipy 函数不带全局变量

来自分类Dev

scipy.lti乘积传递函数

来自分类Dev

将多个参数传递给python中的scipy stats函数

来自分类Dev

具有多维(或非标量)输出的Scipy滤波器

来自分类Dev

Scipy实现的Wiener滤波器从何而来?

来自分类Dev

Scipy的signal.find_peaks_cwt挂断了

来自分类Dev

使用scipy.signal.welch无法找到正确的能量

来自分类Dev

scipy.signal.wiener始终显示警告

来自分类Dev

如何使用scipy.signal.spectogram找到正确的幅度

来自分类Dev

如何实现类似scipy.signal.lfilter的过滤器

来自分类Dev

为什么scipy.signal.cont2discrete返回dt?

来自分类Dev

无法导入scipy.signal.convolve2d

来自分类Dev

模块“scipy.signal”没有属性“stft”

Related 相关文章

  1. 1

    如何为scipy.signal.lfilter使用Python的scipy.signal.remez输出?

  2. 2

    如何将python的scipy.signal.remez输出用于scipy.signal.lfilter?

  3. 3

    如何在scipy.signal中制作一个低通滤波器?

  4. 4

    设计带阻滤波器(在 SciPy firwin)

  5. 5

    在Python中使用scipy.signal时的过滤增益问题

  6. 6

    使用`scipy.signal.butter()`创建低通滤波器时,“阶次”和“临界频率”是什么

  7. 7

    scipy.signal.cwt()函数的“宽度”参数的单位

  8. 8

    Scipy与boost :: python函数

  9. 9

    scipy.signal.lombscargle的使用

  10. 10

    如何使用Python将scipy.signal.spectrogram反转为音频?

  11. 11

    在哪里可以看到传递给scipy.signal.cwt的内置小波函数列表?

  12. 12

    scipy.signal.resample表现异常

  13. 13

    限制scipy.signal.correlate的范围

  14. 14

    scipy.signal.step如何计算时间

  15. 15

    了解 scipy.signal.spectrogram() 的输出

  16. 16

    在Scipy / python中优化分段函数

  17. 17

    Python scipy 函数不带全局变量

  18. 18

    scipy.lti乘积传递函数

  19. 19

    将多个参数传递给python中的scipy stats函数

  20. 20

    具有多维(或非标量)输出的Scipy滤波器

  21. 21

    Scipy实现的Wiener滤波器从何而来?

  22. 22

    Scipy的signal.find_peaks_cwt挂断了

  23. 23

    使用scipy.signal.welch无法找到正确的能量

  24. 24

    scipy.signal.wiener始终显示警告

  25. 25

    如何使用scipy.signal.spectogram找到正确的幅度

  26. 26

    如何实现类似scipy.signal.lfilter的过滤器

  27. 27

    为什么scipy.signal.cont2discrete返回dt?

  28. 28

    无法导入scipy.signal.convolve2d

  29. 29

    模块“scipy.signal”没有属性“stft”

热门标签

归档