Asymmetrical FIR
Asymmetrical filters expect the port to contain the full array of coefficients, i.e., the coefficient array size is equal to the TP_FIR_LEN
.
Symmetrical FIR
In the case of symmetrical filters, only the first half (plus any odd center tap) need be passed, as the remaining might be derived by symmetry.
The length of the array expected will therefore be
(TP_FIR_LEN+1)/2
, e.g., for a filter of length 7, where coefficients are int16
:{1, 2, 3, 5, 3, 2, 1}
, four non-zero tap values, including the center tap, are expected, i.e., the constructor expects an argument:std::array<int16, 4> tapsIn = {1, 2, 3, 5}
.Half-band FIR
For half-band filters, only the non-zero coefficients should be entered with the center tap last in the array.
The length of the array expected will therefore be
(TP_FIR_LEN+1)/4+1
, e.g., for a half-band filter of length 7, where coefficients are:{1, 0, 2, 5, 2, 0, 1}
, three non-zero tap values, including the center tap, are expected, i.e., constructor expects an argument:std::array<int16, 3> tapsIn = {1, 2, 5}
.