iirj
iirj copied to clipboard
An efficient IIR filter library written in JAVA
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
Local install
- Clone this repository
- Run
mvn installto add it to your local maven respository
Maven central
At
click on the iirj version number and then choose the appropriate installation option, for
example for Android studio.
Android Studio
dependencies {
implementation group: 'uk.me.berndporr', name:'iirj', version: '1.5'
}
Android studio will automatically notify you if a new IIR library is available.
Documentation
- Online: https://berndporr.github.io/iirj/
mvn javadoc:javadocgenerates the JavaDocsmvn sitegenerates the web pages containing the documentation undertarget/sitedescribing 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
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]