Source code for wield.iirrational.fitters_ZPK.codings_s.real_BW
#!/usr/bin/env python
# -*- coding: utf-8 -*-
# SPDX-License-Identifier: Apache-2.0
# SPDX-FileCopyrightText: © 2021 Massachusetts Institute of Technology.
# SPDX-FileCopyrightText: © 2021 Lee McCuller <mcculler@caltech.edu>
# NOTICE: authors should document their contributions in concisely in NOTICE
# with details inline in source files, comments, and docstrings.
"""
"""
# import numpy as np
from ..codings_cmn import (
CodingType,
)
[docs]
class CodingRealBW(CodingType):
N_parameters = 1
unstable = False
p_BW_Hz = 0
restabilize = False
[docs]
def update(self, BW):
self.p_BW_Hz = BW
[docs]
def reduce(self):
return [self.p_BW_Hz]
[docs]
def update_roots(self, r1):
assert r1.imag == 0
if self.restabilize:
if r1.real > 0:
r1 = -r1
self.p_BW_Hz = -r1.real
return
@property
def F_Hz(self):
return 0
@property
def BW(self):
return self.p_BW_Hz
@property
def gain_effect(self):
if self.p_BW_Hz < 0:
return -1
else:
return 1
[docs]
def transfer(self):
# real, linear BW
r = -self.p_BW_Hz
return self.sys.Xsf_grid - r
[docs]
def derivative(self):
return [1]
[docs]
def roots_r(self):
r = -self.p_BW_Hz
return [r]