IIR Filter Library
mikroC PRO for PIC32 includes a library for Infinite Impulse Response (IIR) filter. All routines work with fractional Q15 format.
A infinite impulse response (IIR) filter is a type of a digital filter, whose impulse response (the filter's response to a delta function) is non-zero over an infinite length of time.
Library Routines
IIR_Radix
Prototype |
int IIR_Radix (const int BScale, const int AScale, const int *ptrB, const int *ptrA, unsigned FilterOrder, int *ptrInput, unsigned InputLength, int *ptrOutput, unsigned Index); |
---|---|
Description |
This function applies IIR filter to |
Parameters |
|
Returns |
Function returns value of the |
Requires |
Nothing. |
Example |
// Filter setup: // Filter kind: IIR // Filter type: Lowpass filter // Filter order: 2 // Design method: Butterworth const unsigned int FILTER_ORDER = 2; const unsigned int COEFF_B[FILTER_ORDER+1] = {0x344D, 0x689A, 0x344D}; const unsigned int COEFF_A[FILTER_ORDER+1] = {0x4000, 0xA003, 0x2687}; const unsigned int SCALE_B = 4; const unsigned int SCALE_A = -1; int inputSamples[3] = {0x4000, 0x2000, 0x1000}; int outputSamples[10]; int i; void main() { for(i = 0; i < 7; i++) outputSamples[i] = IIR_Radix(SCALE_B, SCALE_A, COEFF_B, COEFF_A, FILTER_ORDER+1, inputSamples, 3,outputSamples, i); // outputSamples[0] = 1/(2^SCALE_B)*COEFF_B[0]*inputSamples[0] // outputSamples[1] = 1/(2^SCALE_B) * (COEFF_B[0]*inputSamples[1] + COEFF_B[1]*inputSamples[0]) - 1/(2^SCALE_A)*(COEFF_A*outputSamples[0]) // . // . // . } |
Notes |
None. |
Copyright (c) 2002-2017 mikroElektronika. All rights reserved.
What do you think about this topic ? Send us feedback!
What do you think about this topic ? Send us feedback!