len = impzlength(b,a) — returns the duration of the pulse response of the specified digital filter. Specify a causal discrete filter with a rational system function given by polynomials from in the numerator b and the denominator a. For stable IIR filters len — the effective length of the pulse response sequence. The terms of the IIR filter impulse response following the term len, are almost zero.
len = impzlength(B,A,"ctf") — returns the effective duration of the pulse response of the digital filter, represented as Cascaded Transfer Functions (CTF) with numerator coefficients B and the coefficients of the denominator A.
len = impzlength((B,A,g),"ctf") — returns the effective duration of the pulse response of the digital filter in CTF format. Specify a filter with numerator coefficients B, the coefficients of the denominator A and scale values g by filter sections.
len = impzlength(sos) — returns the duration of the pulse response of the IIR filter, specified by the matrix of second-order sections sos. Argument sos — this is a matrix of size on , where is the number of sections must be greater than or equal to 2. If the number of sections is less 2, function impzlength processes the input data as a vector of numerators b. Each line sos corresponds to the coefficients of the second-order (biquadrate) filter; - I’m a string sos respond [bi[1] bi[2] bi[3] ai[1] ai[2] ai[3]].
len = impzlength(___,tol) — sets the tolerance for estimating the effective pulse response duration of the IIR filter. The default value of the argument is tol equally 5e−5. Increasing the value tol allows you to estimate a shorter effective pulse response duration of the IIR filter. Decreasing the value tol This leads to an increase in the effective duration of the pulse response of the IIR filter.
Denominator coefficients specified as a vector or scalar (FIR filter).
Типы данных
Float32, Float64
Support for complex numbers
Yes
#B,A are
the coefficients of the cascade transfer function
+
scalars | vectors | matrices
Details
The coefficients of the cascade transfer function, specified as scalars, vectors, or matrices. In matrices B and A The coefficients of the numerator and denominator of the cascade transfer function are listed, respectively.
The matrix B must have a size of on , and the matrix A — on , where
If any element of the matrix A[:,1] not equal to 1, then the function impzlength normalizes the filter coefficients by A[:,1]. In this case A[:,1] must be non-zero.
Scale values specified as a real scalar or vector with real values containing the element where — the number of sections of the cascade transfer function. The scale values represent the distribution of the filter gain across the sections of the cascade filter representation.
Function impzlength applies the gain to the filter sections using the function scaleFilterSections depending on the way the argument is set g:
scalar — the function evenly distributes the gain across all sections of the filter;
vector — the function applies the first applies the gain values to the corresponding filter sections and distributes the last gain value evenly across all filter sections.
A matrix of second-order sections, defined as a matrix of size on . System function The th biquadrate filter has a rational Z-transform
Coefficients in -th row of the matrix sos ordered as follows:
The frequency response of the filter is a system function calculated on a unit circle using the formula
Name-value input arguments
Specify optional argument pairs as Name=Value, where Name — the name of the argument, and Value — the appropriate value.
#tol is
the tolerance for the effective pulse response duration of the IIR filter
+
5e−5 (by default) | scalar
Details
The tolerance for the effective pulse response duration of the IIR filter, set as a positive scalar. The tolerance defines a term of an absolutely summable sequence, after which subsequent terms are considered equal. 0. The default tolerance value is 5e−5. Increasing the tolerance leads to a decrease in the effective duration of the pulse response sequence. Reducing the tolerance leads to an increase in the effective duration of the pulse response sequence.
The duration of the impulse response, returned as a positive integer. For stable IIR filters with absolutely summable impulse characteristics, the function impzlength returns the effective duration of the impulse response, beyond which the coefficients are practically zero. You can control this cutoff point by setting an optional input argument. tol.
Examples
Effective pulse response duration of the IIR filter - Coefficients
Details
Let’s create an "ideal" (with one pole) IIR low-pass filter with a pole on the frequency 0.9. Calculate the effective duration of the impulse response. We get the impulse response. Let’s plot the result graph.
import EngeeDSP.Functions: impzlength
b = [1]
a = [1 -0.9]
len = impzlength(b, a)
93
import EngeeDSP.Functions: impz
h, t = impz(b, a)
plot(t, h,
seriestype = :stem, marker = :circle,
legend = false)
h[len]
6.170365191715192e-5
Additional Info
Cascading transfer functions
Details
Splitting a digital IIR filter into cascaded sections increases its numerical stability and reduces its susceptibility to coefficient quantization errors. Cascade form of the transfer function expressed in terms of transfer functions , has the form
Setting digital filters in CTF format
Details
Digital filters can be designed in CTF format to analyze, visualize, and filter signals. The filter is set by enumerating its coefficients B and A. You can also specify the scaling factor of the filter by sections by setting a scalar or vector value. g.
coeffects of the filter
When setting coefficients in the form -lowercase matrices
it is assumed that the filter is set as a sequence of cascade transfer functions, so that the complete transfer function of the filter has the form
where — the order of the filter numerator, and — the order of the denominator.
If and defined as vectors, it is assumed that the basic system is a single-section IIR filter (), where represents the numerator of the transfer function, and — its denominator.
If — scalar, it is assumed that the filter is a cascade of IIR filters with poles, and the total gain of the system of each cascade is equal to .
If — scalar, it is assumed that the filter is a cascade of FIR filters, and the total gain of the system of each cascade is equal to .
To convert second-order section matrices into cascade transfer functions, use the function sos2ctf.
To convert the filter representation with zeros, poles, and gain into cascaded transfer functions, use the function zp2ctf.
coeffects and amplification
If there is a common scale gain or several scale gain factors that are outside the values of the filter coefficients, you can specify the coefficients and gain as a tuple. (B, A, g). Scaling the filter sections is especially important when working with fixed-point arithmetic to ensure that the output signals of each filter section have similar amplitude levels, which helps to avoid inaccuracies in the frequency response of the filter due to limited computational accuracy.
The gain can be a scalar total gain or a vector of section gain coefficients.
If the gain is scalar, its value is applied uniformly to all sections of the cascade filter.
If the gain is a vector, it must contain one element more than the number of filter sections. in the cascade. Each of the first The scale value is applied to the corresponding filter section, and the last value is applied evenly to all sections of the cascade filter.
If you specify the filter coefficient matrices and the gain coefficient vector as
it is assumed that the transfer function of the filter system has the form
Algorithms
To calculate the impulse response of the FIR filter, the function impzlength uses the length of the argument b.
For IIR filters, the function first finds the poles of the transfer function using the function roots.
If the filter is unstable, the length increases until the point at which the term due to the largest pole reaches -a multiple increase in its initial value.
If the filter is stable, the length increases to the point at which the term due to the pole with the largest amplitude, in tol It exceeds its initial amplitude by several times.
If the filter is oscillating and has poles only on the unit circle, the function impzlength calculates the five periods of the slowest fluctuations.
If the filter has both oscillating and decaying terms, the length increases to the greater of the following values:
The five periods of the slowest fluctuations;
The moment at which the term due to the largest pole is in tol times the initial amplitude.
Literature
Lyons, Richard G. Understanding Digital Signal Processing. Upper Saddle River, NJ: Prentice Hall, 2004.