Digital Signal Processing 2
Assignment – IIR filter
1. IIR Filtering
▪ Revise the theoretical principles of IIR filtering.
▪ Create an IIR filter to extract the background noise from the audio file given in
Assignment 5 (winter term).
▪ Import the audio file in MATLAB: audioread
▪ Design the filter in MATLAB: filterDesigner
▪ Convert the filter to a Single Section structure
▪ Export the coefficients to the MATLAB workspace
▪ Filter the signal: filter
▪ Write the output: audiowrite
▪ How does the precision of the coefficients (Numerator, Denominator) influence the IIR
filter process?
▪ How can those numerical instable calculations be reduced?
2. Home assignment: Digital biquadratic (second-order) filtering in C
Write a C program “filtsos” which reads raw sample data block-wise from a stereo WAV file
and applies an exported MATLAB SOS filter structure.
▪ CLI call: filtsos input.wav output.wav
▪ Input data should be 16-bit (signed) @ 44100Hz PCM (CD quality)
▪ Input stereo data is interleaved as
▪ Block-size: 1024 data samples per channel (array per channel)
▪ Dependency fdacoefs.h
▪ float[][] b, a;
▪ b_len, a_len;
▪ MWSPT_NSEC
▪ Required upload
▪ filtsos.c