/*This is a signal sum of 800 hz and 3.2 khz sine waves which sampled in 10khz and 32 of this samples are create a data array.(input signal) In this example input signal is filtered with 8 points iir filter. Filter is designed as low pass filter and filter coeficient calculated at Octave more info https://github.com/mozanunal/SimpleDSP/wiki/IIR */ extern "C" { #include "simpleDSP_iir.h" } float coefB[4] = { 0.049533, 0.1486, 0.1486, 0.049533}; float coefA[4] = { 1, -1.1619, 0.69594, -0.13776}; int input[255] = { 450.527, -101.597, 1031.37, -613.161, -1618.03, -115.808, -866.986, -1567.2, 541.587, 618.034, -263.146, 1504.41, 1504.41, -263.146, 618.034, 541.587, -1567.2, -866.986, -115.808, -1618.03, -613.161, 1031.37, -101.597, 450.527, 2000, 450.527, -101.597, 1031.37, -613.161, -1618.03, -115.808, -866.986, -1567.2, 541.587, 618.034, -263.146, 1504.41, 1504.41, -263.146, 618.034, 541.587, -1567.2, -866.986, -115.808, -1618.03, -613.161, 1031.37, -101.597, 450.527, 2000, 450.527, -101.597, 1031.37, -613.161, -1618.03, -115.808, -866.986, -1567.2, 541.587, 618.034, -263.146, 1504.41, 1504.41, -263.146, 618.034, 541.587, -1567.2, -866.986, -115.808, -1618.03, -613.161, 1031.37, -101.597, 450.527, 2000, 450.527, -101.597, 1031.37, -613.161, -1618.03, -115.808, -866.986, -1567.2, 541.587, 618.034, -263.146, 1504.41, 1504.41, -263.146, 618.034, 541.587, -1567.2, -866.986, -115.808, -1618.03, -613.161, 1031.37, -101.597, 450.527, 2000, 450.527, -101.597, 1031.37, -613.161, -1618.03, -115.808, -866.986, -1567.2, 541.587, 618.034, -263.146, 1504.41, 1504.41, -263.146, 618.034, 541.587, -1567.2, -866.986, -115.808, -1618.03, -613.161, 1031.37, -101.597, 450.527, 2000, 450.527, -101.597, 1031.37, -613.161, -1618.03, -115.808, -866.986, -1567.2, 541.587, 618.034, -263.146, 1504.41, 1504.41, -263.146, 618.034, 541.587, -1567.2, -866.986, -115.808, -1618.03, -613.161, 1031.37, -101.597, 450.527, 2000, 450.527, -101.597, 1031.37, -613.161, -1618.03, -115.808, -866.986, -1567.2, 541.587, 618.034, -263.146, 1504.41, 1504.41, -263.146, 618.034, 541.587, -1567.2, -866.986, -115.808, -1618.03, -613.161, 1031.37, -101.597, 450.527, 2000, 450.527, -101.597, 1031.37, -613.161, -1618.03, -115.808, -866.986, -1567.2, 541.587, 618.034, -263.146, 1504.41, 1504.41, -263.146, 618.034, 541.587, -1567.2, -866.986, -115.808, -1618.03, -613.161, 1031.37, -101.597, 450.527, 2000, 450.527, -101.597, 1031.37, -613.161, -1618.03, -115.808, -866.986, -1567.2, 541.587, 618.034, -263.146, 1504.41, 1504.41, -263.146, 618.034, 541.587, -1567.2, -866.986, -115.808, -1618.03, -613.161, 1031.37, -101.597, 450.527, 2000, 450.527, -101.597, 1031.37, -613.161, -1618.03, -115.808, -866.986, -1567.2, 541.587, 618.034, -263.146, 1504.41, 1504.41, -263.146, 618.034, 541.587, -1567.2, -866.986, -115.808, -1618.03, -613.161, 1031.37, -101.597, 450.527, 2000, 450.527, -101.597, 1031.37, -613.161, -1618.03}; IIR iir1; long startTime; long calcTime; void setup() { Serial.begin(9600); iirInit(&iir1, 4, coefB, 4, coefA); Serial.println("IIR filter initiliaze finished"); float a; startTime = micros(); for (int i = 0; i < 255; i++) { a = iirFilt(&iir1, input[i]); } calcTime = micros() - startTime; Serial.print("Total calculation time: "); Serial.println(calcTime); } void loop() { }