精华内容
下载资源
问答
  • python-eq3bt Python 库和 EQ3 蓝牙智能恒温器的命令行工具,使用 bluepy 进行 BTLE 通信。 这个库是来自 Markus Peter ( ) 的 bluepy_devices 的简化版本,支持更多功能和更好的设备处理。 特征 读取设备状态:...
  • python生成EQ滤波器-IIR数字滤波器

    千次阅读 2019-05-07 18:13:32
    本文参考自如下博客文章:博客,原代码基于matlab编写,文章只是把部分滤波器代码用python实现。 共实现下面五种IIR数字滤波器:lowpass,highpass,lowshelf,highshelf,peak/notch。 需要模块 import numpy as np...

    版权说明

    本文参考自如下博客文章:博客,原代码基于matlab编写,文章只是把部分滤波器代码用python实现。
    共实现下面五种IIR数字滤波器:lowpass,highpass,lowshelf,highshelf,peak/notch。

    需要模块

    import numpy as np
    from scipy import signal as sg
    import matplotlib.pyplot as plt
    

    低通滤波 lowpass

    def low_pass_filter_iir(f0, Q=1., fs=192000):
        """
        根据PEQ参数设计二阶IIR数字低通滤波器,默认采样率192k
        :param f0: 中心频率
        :param Q: 峰值带宽
        :param fs: 系统采样率
        :return: 双二阶滤波器系数
        """
        w0 = 2 * np.pi * f0 / fs
        alpha = np.sin(w0) / (2 * Q)
    
        b0 = (1 - np.cos(w0)) / 2
        b1 = 1 - np.cos(w0)
        b2 = (1 - np.cos(w0)) / 2
        a0 = 1 + alpha
        a1 = -2 * np.cos(w0)
        a2 = 1 - alpha
        b = np.array([b0, b1, b2])
        a = np.array([a0, a1, a2])
        h = np.hstack((b / a[0], a / a[0]))
    
        return h
    

    高通滤波 highpass

    def high_pass_filter_iir(f0, Q=1., fs=192000):
        """
        根据PEQ参数设计二阶IIR数字高通滤波器,默认采样率192k
        :param f0: 中心频率
        :param Q: 峰值带宽
        :param fs: 系统采样率
        :return: 双二阶滤波器系数
        """
        w0 = 2 * np.pi * f0 / fs
        alpha = np.sin(w0) / (2 * Q)
    
        b0 = (1 + np.cos(w0)) / 2
        b1 = -1 - np.cos(w0)
        b2 = (1 + np.cos(w0)) / 2
        a0 = 1 + alpha
        a1 = -2 * np.cos(w0)
        a2 = 1 - alpha
        b = np.array([b0, b1, b2])
        a = np.array([a0, a1, a2])
    
        h = np.hstack((b / a[0], a / a[0]))
    
        return h
    

    低频增强滤波器 lowshelf

    def low_shelf_filter_iir(f0, gain=0., Q=1., fs=192000):
        """
        根据PEQ参数设计二阶IIR数字low shelf滤波器,默认采样率192k
        :param f0: 中心频率
        :param gain: 峰值增益
        :param Q: 峰值带宽
        :param fs: 系统采样率
        :return: 双二阶滤波器系数
        """
        A = np.sqrt(10 ** (gain / 20))
        w0 = 2 * np.pi * f0 / fs
        alpha = np.sin(w0) / (2 * Q)
    
        b0 = A * ((A + 1) - (A - 1) * np.cos(w0) + 2 * np.sqrt(A) * alpha)
        b1 = 2 * A * ((A - 1) - (A + 1) * np.cos(w0))
        b2 = A * ((A + 1) - (A - 1) * np.cos(w0) - 2 * np.sqrt(A) * alpha)
        a0 = (A + 1) + (A - 1) * np.cos(w0) + 2 * np.sqrt(A) * alpha
        a1 = -2 * ((A - 1) + (A + 1) * np.cos(w0))
        a2 = (A + 1) + (A - 1) * np.cos(w0) - 2 * np.sqrt(A) * alpha
    
        b = np.array([b0, b1, b2])
        a = np.array([a0, a1, a2])
    
        h = np.hstack((b / a[0], a / a[0]))
    
        return h
    

    高频增强滤波器 highshelf

    def high_shelf_filter_iir(f0, gain=0., Q=1., fs=192000):
        """
        根据PEQ参数设计二阶IIR数字high shelf滤波器,默认采样率192k
        :param f0: 中心频率
        :param gain: 峰值增益
        :param Q: 峰值带宽
        :param fs: 系统采样率
        :return: 双二阶滤波器系数
        """
        A = np.sqrt(10 ** (gain / 20))
        w0 = 2 * np.pi * f0 / fs
        alpha = np.sin(w0) / (2 * Q)
    
        b0 = A * ((A + 1) + (A - 1) * np.cos(w0) + 2 * np.sqrt(A) * alpha)
        b1 = -2 * A * ((A - 1) + (A + 1) * np.cos(w0))
        b2 = A * ((A + 1) + (A - 1) * np.cos(w0) - 2 * np.sqrt(A) * alpha)
        a0 = (A + 1) - (A - 1) * np.cos(w0) + 2 * np.sqrt(A) * alpha
        a1 = 2 * ((A - 1) - (A + 1) * np.cos(w0))
        a2 = (A + 1) - (A - 1) * np.cos(w0) - 2 * np.sqrt(A) * alpha
    
        b = np.array([b0, b1, b2])
        a = np.array([a0, a1, a2])
    
        h = np.hstack((b / a[0], a / a[0]))
    
        return h
    

    peak/notch滤波器

    def peak_filter_iir(f0, gain=0., Q=1., fs=192000):
        """
        根据PEQ参数设计二阶IIR数字peak滤波器,默认采样率192k
        :param f0: 中心频率
        :param gain: 峰值增益,正值为peak filter,负值为notch filter
        :param Q: 峰值带宽
        :param fs: 系统采样率
        :return: 双二阶滤波器系数
        """
        A = np.sqrt(10 ** (gain / 20))
        w0 = 2 * np.pi * f0 / fs
        alpha = np.sin(w0) / (2 * Q)
    
        b0 = 1 + alpha * A
        b1 = -2 * np.cos(w0)
        b2 = 1 - alpha * A
        a0 = 1 + alpha / A
        a1 = -2 * np.cos(w0)
        a2 = 1 - alpha / A
        b = np.array([b0, b1, b2])
        a = np.array([a0, a1, a2])
    
        h = np.hstack((b / a[0], a / a[0]))
    
        return h
    

    滤波器测试

    if __name__ == '__main__':
        f0 = 1000
        Q = 1
        fs = 48000
        gain = 10
    
        sos = high_shelf_filter_iir(f0, gain, Q, fs)
        w, h = sg.sosfreqz(sos, worN=4096, fs=fs)
    
        fig, ax1 = plt.subplots()
        ax1.semilogx(w, 20 * np.log10(abs(h)), 'b')
        ax1.set_ylabel('Amplitude [dB]', color='b')
        ax1.set_xlabel('Frequency')
        ax1.grid()
        ax2 = ax1.twinx()
        ax2.semilogx(w, np.angle(h, deg=True), 'r')
        ax2.set_ylabel('Angle [deg]', color='r')
        ax2.axis('tight')
        plt.show()
    
    

    测试结果

    高频增强滤波器

    展开全文
  • Python中__eq__注意点

    千次阅读 2020-01-15 10:42:19
    eq注意点 代码块: class A: def __eq__(self, other): print(self) print(other) # if self.__dict__ == other.__dict__: if self == other: # 此处相当于一直在反复的执行 a == b r...

    eq注意点

    代码块:

    class A:
        def __eq__(self, other):
            print(self)
            print(other)
            # if self.__dict__ == other.__dict__:
            if self == other:   # 此处相当于一直在反复的执行 a == b
                return True
    a = A()
    b = A()
    # print(a)
    # print(b)
    print(a == b)
    

    执行结果:

    RecursionError: maximum recursion depth exceeded while getting the str of an object
    

    报错问题原因:
    eq判断语句中的 self == other 其实就是 a == b,所以在通过self == other语句在反复执行 __eq__函数

    展开全文
  • PythonPython开发Python语言Python:__eq_和__str__函数的用法 一.__eq__方法在我们定义一个类的时候,常常想对一个类所实例化出来的两个对象进行判断这两个对象是否是完全相同的。一般情况下,我们认为如果同一个类...

    Python

    Python开发

    Python语言

    Python:__eq_和__str__函数的用法

    CgpOIF5EAWWAQ0y_AAcB-fDz9P0878.png

    一.__eq__方法

    在我们定义一个类的时候,常常想对一个类所实例化出来的两个对象进行判断这两个对象是否是完全相同的。一般情况下,我们认为如果同一个类实例化出来的两个对象的属性全都是一样的话,那么这两个对象是相同的。但是如果我们直接用"==”来判断这两个对象知否相等,那么结果一定是不相等的,因为这两个对象的地址一定不同,它们在内存当中的不同区域,比如我们有代码:

    classItem:def __init__(self, name, weight):

    self.name=name

    self.weight=weight

    cat_1= Item('Cat', 5)

    cat_2= Item('Cat', 5)print(cat_1 == cat_2)

    这段代码当中,我们创建了两个“item”对象,它们的属性“name”和“weight”都完全一致,这段程序看似正确,应该打印出True,但实际上输出是:

    False

    原因则是因为这两个对象的地址是不同的,那么怎么才能够让它们只要属性相同两个对象就相等呢?那就是利用__eq__方法来进行判断,这个方法默认有两个参数,一个是self,另一个是other.也就是用自身的属性和other对象的属性分别进行比较,如果比对成功则返回True,失败则返回False。你也可以自定义想要比较的属性有哪些,也不一定是全部的属性都一样才相等。我们有代码:

    classItem:def __init__(self, name, weight):

    self.name=name

    self.weight=weightdef __eq__(self, other):#`__eq__` is an instance method, which also accepts

    #one other object as an argument.

    if type(other)==type(self) and other.name==self.name and other.weight==self.weight:returnTrueelse:return False#返回False这一步也是需要写的哈,不然判断失败就没有返回值了

    cat_1= Item('Cat', 5)

    cat_2= Item('Cat', 5)print(cat_1.__eq__(cat_2)) #should evaluate to True

    print(cat_1 == cat_2) #should also evaluate to True

    这样,就会打印出两个True了。

    二.__str__方法

    我们如果把自己创建的对象直接打印出来,那么一般是这样,比如我们有代码:

    print(cat_1)

    输出:

    <__main__.Item object at 0x7f8e3d99f190

    这是一个看起来十分难看的输出,输出的是这对象的类别和地址。但我们可以把这个输出改成自己想要的样子,那就是利用__str__方法。我们重写这个方法,让这个返回一个值,那么最后输出的就是我们的返回值,如下所示:

    classItem:def __init__(self, name, weight):

    self.name=name

    self.weight=weightdef __eq__(self, other):if type(other)==type(self) and other.name==self.name and other.weight==self.weight:returnTrueelse:returnFalsedef __str__(self):return 'the name of this cat is {}'.format(self.name)

    再次创建并打印:

    cat_1 = Item('Cat', 5)

    cat_2= Item('Cat', 5)print(cat_1)print(cat_2)

    可得到输出:

    the name of this cat isCat

    the name of this catis Cat

    这样这个输出看起来就不会有那么麻烦了,自定义的输出果然清晰了不少啊!

    内容来源于网络,如有侵权请联系客服删除

    展开全文
  • operator.eq operator.eq()函数 (operator.eq() Function) operator.eq() function is a library function of operator module, it is used to perform "equal to operation" on two values and returns True if the...

    operator.eq

    operator.eq()函数 (operator.eq() Function)

    operator.eq() function is a library function of operator module, it is used to perform "equal to operation" on two values and returns True if the first value is equal to the second value, False, otherwise.

    operator.eq()函数是运营商模块的库函数,它被用于在两个值并返回true执行“等于操作”如果第一个值等于所述第二值, 假 ,否则。

    Module:

    模块:

        import operator
    
    

    Syntax:

    句法:

        operator.eq(x,y)
    
    

    Parameter(s):

    参数:

    • x,y – values to be compared.

      x,y –要比较的值。

    Return value:

    返回值:

    The return type of this method is bool, it returns True if x is equal to y, False, otherwise.

    此方法的返回类型为bool ,如果x等于y ,则返回True ,否则返回False 。

    Example 1:

    范例1:

    # Python operator.eq() Function Example
    
    import operator
    
    # integers
    x = 10
    y = 20
    
    print("x:",x, ", y:",y)
    print("operator.eq(x,y): ", operator.eq(x,y))
    print("operator.eq(y,x): ", operator.eq(y,x))
    print("operator.eq(x,x): ", operator.eq(x,x))
    print("operator.eq(y,y): ", operator.eq(y,y))
    print()
    
    # strings
    x = "Apple"
    y = "Banana"
    
    print("x:",x, ", y:",y)
    print("operator.eq(x,y): ", operator.eq(x,y))
    print("operator.eq(y,x): ", operator.eq(y,x))
    print("operator.eq(x,x): ", operator.eq(x,x))
    print("operator.eq(y,y): ", operator.eq(y,y))
    print()
    
    # printing the return type of the function
    print("type((operator.eq(x,y)): ", type(operator.eq(x,y)))
    
    

    Output:

    输出:

    x: 10 , y: 20
    operator.eq(x,y):  False
    operator.eq(y,x):  False
    operator.eq(x,x):  True
    operator.eq(y,y):  True
    
    x: Apple , y: Banana
    operator.eq(x,y):  False
    operator.eq(y,x):  False
    operator.eq(x,x):  True
    operator.eq(y,y):  True
    
    type((operator.eq(x,y)):  <class 'bool'>
    
    

    Example 2:

    范例2:

    # Python operator.eq() Function Example
    import operator
    
    # input two numbers
    x = int(input("Enter first number : "))
    y = int(input("Enter second number: "))
    
    # printing the values
    print("x:",x, ", y:",y)
    
    # comparing
    if operator.eq(x,y):
      print(x, "is equal to", y)
    else:
      print(x, "is not equal to", y)  
    
    

    Output:

    输出:

    RUN 1:
    Enter first number : 10
    Enter second number: 10
    x: 10 , y: 10
    10 is equal to 10
    
    RUN 2:
    Enter first number : 10
    Enter second number: 20
    x: 10 , y: 20
    10 is not equal to 20
    
    
    

    翻译自: https://www.includehelp.com/python/operator-eq-function-with-examples.aspx

    operator.eq

    展开全文
  • v in type_dict.items() if 'property' in str(v)} __eq__会变成这样: def __eq__(self, other): properties = self._properties() & other._properties() if other._properties() > properties and self._...
  • 参看知乎文章:谈谈__eq__和__hash__
  • I have a class where I want to override the __eq__() operator. It seems to make sense that I should override the __ne__() operator as well, but does it make sense to implement __ne__ based on __eq__ a...
  • 主要介绍了Python:__eq__和__str__函数的使用示例,帮助大家更好的理解和学习python,感兴趣的朋友可以了解下
  • python2我们经常会使用cmp函数来比较一些东西,但是在python3,你再来使用这个函数的时候,发现就报错了,提示找不到这个函数,这是为啥呢?嗯,新版的python已经舍弃之。 在python3使用时报错信息
  • Python3已经不能使用cmp()函数了,被如下五个函数替代:import operator #首先要导入运算符模块 operator.gt(1,2) #意思是greater than(大于) operator.ge(1,2) #意思是greater and equal(大于等于) operator....
  • Python Socket编程之聊天机器人(源码)>> 最近有点忙,没有及时更新多多见谅。今天教大家用代码玩玩小测试。最下方有“”彩蛋“”! 引导语:美国心理学家认为:在人的成功的诸多主观上的因素里面,智商...
  • 今天小编就为大家分享一篇关于Python判断对象是否相等及eq函数的讲解,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧
  • Python基础之:Python中的内部对象

    千次阅读 2021-04-06 09:04:32
    Python中内置了很多非常有用的对象,本文将会介绍Python中的内置函数,内置常量,内置类型和内置异常。
  • 摘要什么是python对象的标识python对象相等的判断自定义python对象相等的条件python对象的标识python对象标识就是python对象自身的要素,python对象主要有3要素:id:相当于对象在内存的地址,相当于c的指针,可以...
  • python 判断树结构是否相同,巧妙利用列表 in 操作 1)判断一个树结构是否相同,我们需要判断节点值是否相同,以及其子树是否相同,比如图片所示,先判断根节点是否为 ‘+’ 然后再判断4个子树是否相同 2)子树...
  • python中字符串怎么比较大小,字符串,函数,对象,两个,如果你python中字符串怎么比较大小易采站长站,站长之家为您整理了python中字符串怎么比较大小的相关内容。Python的字符串比较与Java类似,也需要一个比较函数,...
  • Python3 函数(gt,ge,eq,le,lt)的意义

    千次阅读 2020-03-30 10:21:02
    Python3已经不能使用cmp()函数了,被如下五个函数替代: import operator #首先要导入运算符模块 operator.gt(1,2) #意思是greater than(大于) operator.ge(1,2) #意思是greater and equal(大于等于) operator...
  • 在虚拟环境安装所需的软件包 pip3 install -r requirements.txt 5.安装eq-fault_geom软件包 pip install -e . 6.运行测试 要运行所有测试: python setup.py test 建议的Python包的初始布局
  • [1, 2, 3] nums2 = [1, 2, 3] print(nums1 == nums2) # True print(nums1 is nums2) # False class Person(object): def init(self, name, age, id): self.name = name self.age = age self.id = id def __eq_...
  • python 3.4.3 的版本已经没有cmp函数,被operator模块代替,在交互模式下使用时,需要导入模块。 在没有导入模块情况下,会出现 提示找不到cmp函数了,那么在python3该如何使用这个函数呢? 所以要导入模块 ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 36,921
精华内容 14,768
关键字:

python中eq

python 订阅