pydsm.NTFdesign.delsig.ntf_clans¶
- pydsm.NTFdesign.delsig.ntf_clans(order=4, osr=64, nq=5, rmax=0.95, opt=0, **options)¶
Synthesize the NTF for a ΔΣM w/ multibit quantizer by the CLANS method.
This function is based on the CLANS method (Closed-Loop Analysis of Noise Shaping Coders) by J. G. Kenney and L. R. Carley, described in ‘Design of Multibit Noise Shaping Data Converters’ Analog Integrated Circuits and Signal Processing Vol. 3 pp 259-272 (1993).
The method is only suitable for low pass modulators.
Parameters: order : int, optional
the order of the modulator, defaults to 4
osr : float, optional
the oversamping ratio (based on the actual signal bandwidth). Defaults to 64
nq : int, optional
the number of quantization levels, defaults to 5
rmax : real, optional
the maximum radius of the NTF poles
opt : int, optional
opt parameter passed to synthesizeNTF which is used to compute the NTF zero location and the initial pole location for the optimizer
Returns: ntf : tuple
noise transfer function in zpk form.
Other Parameters: show_progress : bool, optional
provide extended output, default is False and can be updated by changing the function default_options attribute.
slsqp_opts : dictionary, optional
Parameters passed to the fmin_slsqp optimizer. Allowed options are:
- maxiters
Maximum number of iterations (defaults to 100)
- ftol
Precision goal for the value of f in the stopping criterion (defaults to 1e-6)
- eps
Step size used for numerical approximation of the jacobian (defaults to 1.4901161193847656e-08)
Do not use other options since they could break the minimizer in unexpected ways. Defaults can be set by changing the function default_options attribute.
Raises: ValueError
‘Error. f0 must be less than 0.5’ if f0 is out of range
‘Order must be even for a bandpass modulator.’ if the order is incompatible with the modulator type.
‘The opt vector must be of length xxx’ if opt is used to explicitly pass the NTF zeros and these are in the wrong number.
Notes
This is actually an adaptation of the CLANS method. In the original paper about CLANS, NTF zeros are placed at z=1 (with the indication that other placements are possible). Here, the zeros are placed where synthesizeNTF places them.
The computation is based on a nonlinear, nonlinearly constrained optimization. Since the optimizer used here is different from the optimizer used in other toolboxes implementing this function, the results may differ. The current optimizer is SLSQP.
The function internally calls synthesizeNTF, and rises the same exceptions as synthesizeNTF.