Filtering techniques
This framework provides implementations of some noise prediction techniques.
Built-in filtering techniques
Static:
Wiener Filter (WF)
Adaptive:
Updating Wiener Fitler (UWF)
Least-Mean-Squares Filter (LMS)
Non-Linear:
Experimental non-linear LMS Filter variant (PolynomialLMS)
Minimal example
A minimal example of how the filtering techniques can be used. All techniques follow the same interface concept.
>>> import franc as fnc
>>>
>>> # generate data
>>> n_channel = 2
>>> witness, target = fnc.eval.TestDataGenerator([0.1]*n_channel, rng_seed=123).generate(int(1e5))
>>>
>>> # instantiate the filter and apply it
>>> filt = fnc.filt.LMSFilter(n_filter=128, idx_target=0, n_channel=n_channel)
>>> filt.condition(witness, target)
>>> prediction = filt.apply(witness, target) # check on the data used for conditioning
>>>
>>> # success
>>> round(fnc.eval.rms(target-prediction) / fnc.eval.rms(prediction), 10)
0.0815971935