iirj
An IIR filter library written in JAVA.
Highpass, lowpass, bandpass and bandstop as Butterworth, Bessel and Chebyshev Type I/II.
You can also calculate the filter coefficients with Python's
scipy and then create your custom IIR filter.
See the python-design
subdirectory.
It's based on the IIR1 library [https://github.com/berndporr/iir1] which in turn is based on Vinnie Falco's DSPFilters [https://github.com/vinniefalco/DSPFilters].
Usage
import uk.me.berndporr.iirj.*;
Constructor
Butterworth butterworth = new Butterworth();
Initialisation
-
Bandstop
butterworth.bandStop(order,Samplingfreq,Center freq,Width in frequ);
-
Bandpass
butterworth.bandPass(order,Samplingfreq,Center freq,Width in frequ);
-
Lowpass
butterworth.lowPass(order,Samplingfreq,Cutoff frequ);
-
Highpass
butterworth.highPass(order,Samplingfreq,Cutoff frequ);
Filtering
Sample by sample for realtime processing:
v = butterworth.filter(v)
Coding examples
See the *Test.java
files for complete examples
for all filter types. Run them with mvn test
. These test programs
write the different impulse responses of the filters to text files.
Installation
Just run: mvn install
to add it to your local maven respository or
just point your project to Maven Central:
Maven central
Click on
to get the latest version.
Android Studio
dependencies {
implementation group: 'uk.me.berndporr', name:'iirj', version: '1.4'
}
Documentation
- Online: https://berndporr.github.io/iirj/
mvn javadoc:javadoc
generates the JavaDocsmvn site
generates the web pages containing the documentation undertarget/site
describing all commands in detail.
Testing
mvn test
creates impulse responses in the subdirectories
for the different filters: target/surefire-reports
.
To see the impulse and frequency responses run:
python3 ./plot_impulse_fresponse.py <filter>
where is is bessel, butterworth, chebyshevI or chebyshevII.
The script DetectorTest uses a bandpass filter to detect the heartbeats of an ECG recording faking a matched filter which could be also seen as a 1st approximation of a wavelet. The heartrate is stored in hr.txt.
Have fun
/Bernd Porr [http://www.berndporr.me.uk]