ezmsg.sigproc.combfilter#

Functions

comb(axis, fundamental_freq=50.0, num_harmonics=3, q_factor=35.0, filter_type='notch', coef_type='sos', quality_scaling='constant')[source]#

Create a comb filter for enhancing or removing a fundamental frequency and its harmonics.

Parameters:
  • axis (str | None) – Axis to filter along

  • fundamental_freq (float) – Base frequency in Hz

  • num_harmonics (int) – Number of harmonic peaks/notches (including fundamental)

  • q_factor (float) – Quality factor for peak/notch width

  • filter_type (str) – ‘notch’ to remove or ‘peak’ to enhance harmonics

  • coef_type (str) – Coefficient type (‘sos’ recommended for stability)

  • quality_scaling (str) – How to handle bandwidths across harmonics

Returns:

CombFilterTransformer

Return type:

CombFilterTransformer

comb_design_fun(fs, fundamental_freq=60.0, num_harmonics=3, q_factor=35.0, filter_type='notch', coef_type='sos', quality_scaling='constant')[source]#

Design a comb filter as cascaded second-order sections targeting a fundamental frequency and its harmonics.

Returns:

The filter coefficients as SOS (recommended) or (b, a) for finite precision stability.

Parameters:
Return type:

tuple[ndarray[tuple[Any, …], dtype[_ScalarT]], ndarray[tuple[Any, …], dtype[_ScalarT]]] | ndarray[tuple[Any, …], dtype[_ScalarT]] | None

Classes

class CombFilterSettings(axis=None, coef_type='ba', fundamental_freq=60.0, num_harmonics=3, q_factor=35.0, filter_type='notch', quality_scaling='constant')[source]#

Bases: FilterBaseSettings

Settings for CombFilter.

Parameters:
  • axis (str | None)

  • coef_type (str)

  • fundamental_freq (float)

  • num_harmonics (int)

  • q_factor (float)

  • filter_type (str)

  • quality_scaling (str)

fundamental_freq: float = 60.0#

Fundamental frequency in Hz

num_harmonics: int = 3#

Number of harmonics to include (including fundamental)

q_factor: float = 35.0#

Quality factor (Q) for each peak/notch

filter_type: str = 'notch'#

‘notch’ removes harmonics, ‘peak’ passes harmonics at the expense of others.

Type:

Type of comb filter

quality_scaling: str = 'constant'#

same quality for all harmonics results in wider bands at higher frequencies, ‘proportional’: quality proportional to frequency results in constant bandwidths.

Type:

’constant’

__init__(axis=None, coef_type='ba', fundamental_freq=60.0, num_harmonics=3, q_factor=35.0, filter_type='notch', quality_scaling='constant')#
Parameters:
  • axis (str | None)

  • coef_type (str)

  • fundamental_freq (float)

  • num_harmonics (int)

  • q_factor (float)

  • filter_type (str)

  • quality_scaling (str)

Return type:

None

class CombFilterTransformer(*args, **kwargs)[source]#

Bases: FilterByDesignTransformer[CombFilterSettings, tuple[ndarray[tuple[Any, …], dtype[_ScalarT]], ndarray[tuple[Any, …], dtype[_ScalarT]]] | ndarray[tuple[Any, …], dtype[_ScalarT]]]

get_design_function()[source]#

Return a function that takes sampling frequency and returns filter coefficients.

Return type:

Callable[[float], tuple[ndarray[tuple[Any, …], dtype[_ScalarT]], ndarray[tuple[Any, …], dtype[_ScalarT]]] | ndarray[tuple[Any, …], dtype[_ScalarT]] | None]

class CombFilterUnit(*args, settings=None, **kwargs)[source]#

Bases: BaseFilterByDesignTransformerUnit[CombFilterSettings, CombFilterTransformer]

Parameters:

settings (Settings | None)

SETTINGS#

alias of CombFilterSettings

class CombFilterSettings(axis=None, coef_type='ba', fundamental_freq=60.0, num_harmonics=3, q_factor=35.0, filter_type='notch', quality_scaling='constant')[source]#

Bases: FilterBaseSettings

Settings for CombFilter.

Parameters:
  • axis (str | None)

  • coef_type (str)

  • fundamental_freq (float)

  • num_harmonics (int)

  • q_factor (float)

  • filter_type (str)

  • quality_scaling (str)

fundamental_freq: float = 60.0#

Fundamental frequency in Hz

num_harmonics: int = 3#

Number of harmonics to include (including fundamental)

q_factor: float = 35.0#

Quality factor (Q) for each peak/notch

filter_type: str = 'notch'#

‘notch’ removes harmonics, ‘peak’ passes harmonics at the expense of others.

Type:

Type of comb filter

quality_scaling: str = 'constant'#

same quality for all harmonics results in wider bands at higher frequencies, ‘proportional’: quality proportional to frequency results in constant bandwidths.

Type:

’constant’

__init__(axis=None, coef_type='ba', fundamental_freq=60.0, num_harmonics=3, q_factor=35.0, filter_type='notch', quality_scaling='constant')#
Parameters:
  • axis (str | None)

  • coef_type (str)

  • fundamental_freq (float)

  • num_harmonics (int)

  • q_factor (float)

  • filter_type (str)

  • quality_scaling (str)

Return type:

None

comb_design_fun(fs, fundamental_freq=60.0, num_harmonics=3, q_factor=35.0, filter_type='notch', coef_type='sos', quality_scaling='constant')[source]#

Design a comb filter as cascaded second-order sections targeting a fundamental frequency and its harmonics.

Returns:

The filter coefficients as SOS (recommended) or (b, a) for finite precision stability.

Parameters:
Return type:

tuple[ndarray[tuple[Any, …], dtype[_ScalarT]], ndarray[tuple[Any, …], dtype[_ScalarT]]] | ndarray[tuple[Any, …], dtype[_ScalarT]] | None

class CombFilterTransformer(*args, **kwargs)[source]#

Bases: FilterByDesignTransformer[CombFilterSettings, tuple[ndarray[tuple[Any, …], dtype[_ScalarT]], ndarray[tuple[Any, …], dtype[_ScalarT]]] | ndarray[tuple[Any, …], dtype[_ScalarT]]]

get_design_function()[source]#

Return a function that takes sampling frequency and returns filter coefficients.

Return type:

Callable[[float], tuple[ndarray[tuple[Any, …], dtype[_ScalarT]], ndarray[tuple[Any, …], dtype[_ScalarT]]] | ndarray[tuple[Any, …], dtype[_ScalarT]] | None]

class CombFilterUnit(*args, settings=None, **kwargs)[source]#

Bases: BaseFilterByDesignTransformerUnit[CombFilterSettings, CombFilterTransformer]

Parameters:

settings (Settings | None)

SETTINGS#

alias of CombFilterSettings

comb(axis, fundamental_freq=50.0, num_harmonics=3, q_factor=35.0, filter_type='notch', coef_type='sos', quality_scaling='constant')[source]#

Create a comb filter for enhancing or removing a fundamental frequency and its harmonics.

Parameters:
  • axis (str | None) – Axis to filter along

  • fundamental_freq (float) – Base frequency in Hz

  • num_harmonics (int) – Number of harmonic peaks/notches (including fundamental)

  • q_factor (float) – Quality factor for peak/notch width

  • filter_type (str) – ‘notch’ to remove or ‘peak’ to enhance harmonics

  • coef_type (str) – Coefficient type (‘sos’ recommended for stability)

  • quality_scaling (str) – How to handle bandwidths across harmonics

Returns:

CombFilterTransformer

Return type:

CombFilterTransformer