filter_comb_var :
A variable comb filter for xreal-typed signals.
The filter_comb_var
primitive models a variable continuous-time comb filter, of which Laplace s-domain transfer function is:
a0 + a1*exp(-s*T) H(s) = ------------------- b0 + b1*exp(-s*T)
where the value of T is controlled by a real-typed input delay
. The numerator coefficients a0 and a1 are defined by the parameter array num_data
(namely, num_data[0] and num_data[1], respectively), and the denominator coefficients b0 and b1 are defined by the parameter array den_data
(namely, den_data[0] and den_data[1], respectively). The value of the coefficient b0 (i.e. den_data[0] value) must not be zero.
Such comb filters are typically realized by combining the input signal in(t) or output signal out(t) and their delayed signals (in(t-T) or out(t-T), respectively) in a feedforward or feedback manner:
Feedforward type : out(t) = a0*in(t) + a1*in(t-T) Feedback type : out(t) = (a0*in(t) - b1*out(t-T))/b0
and this primitive can express both types of comb filters. The delay T is defined by the parameter delay
.
Note that the transfer function of a comb filter basically describes a discrete-time system with a sampling period of T. To avoid a series of discrete-time events being generated and slowing down the simulation, the filter_comb_var
primitive computes its response using an approximate, equivalent continuous-time transfer function instead.
Optionally, one can also describe the deviation of the delay from its nominal value set by the input delay
as a function of frequency f, using the parameter array delay_data
. This parameter delay_data
defines the coefficients of a single-input polynomial function in the same way that the parameter data
does for the primitive poly_func
. For instance, setting delay_data
to ‘{d0, d1} implies that the delay T would vary as a linear function with the frequency f:
T(f) = delay + (d0 + d1*f).
Such variation in the delay causes shifts in the periodic patterns of the comb filter’s frequency response.
Input/Output Terminals
Name | I/O | Type | Description |
out | output | xreal | output signal |
in | input | xreal | input signal |
delay | input | real | delay (T) |
Parameters
Name | Type | Default | Unit | Description |
num_data | real array | ‘{1.0, 0.0} | None | numerator coefficients (a0, a1) |
den_data | real array | ‘{1.0, 0.0} | None | denominator coefficients (b0, b1) |
delay_data | real array | ‘{0.0} | seconds | delay variation data |
filename | string | “” | None | parameter definition file |