DSPRelated.com
Forums

Is a frame-based processing possible for biquad filters?

Started by parksean210 2 years ago2 replieslatest reply 2 years ago200 views

I didn't think it is possible but there is a frame-based processing for IIR filters in MATLAB.

https://kr.mathworks.com/help/simulink/slref/discr...

I thought that it is impossible to do a frame-based processing for biquad filters since it requires the recursive feedback data in their structure.

Is there any reference article to learn how to use a frame-based filter for biquad filters?


Thank you in advance.

[ - ]
Reply by weetabixharrySeptember 2, 2022

There doesn't seem to be anything fundamentally different about "frame-based" processing in MATLAB. The frames are not independent. Simply, the sample data is collected into "frames" before processing.

The link you provided referenced this page:
https://ch.mathworks.com/help/dsp/ug/sample-and-fr...

I think this diagram sums it up pretty well. Frames may contain >= 1 independent channel, but the data for each channel is contiguous in each frame:

multichannel_framebased_signal.png

Therefore, if it is possible to apply some function via sample-based processing, then in principleĀ it should also be possible to do the same thing via frame-based processing.

[ - ]
Reply by kschutzSeptember 2, 2022

Yes, you can implement biquad filters in Simulink using frame-based processing. That said, it's not very intuitive. There are problems, all of which can be addressed.

1. Unit delay blocks in Simulink have an input processing setting. This must be set to frame-based processing. Most users have this set to sample-based. That won't work.

2. You'll need to set up your scope correctly to visualize the signal correctly. This doesn't impact signal processing but it impacts your ability to interpret the results as a human viewer.

3. You'll hit algebraic loops out of the gate. These slow the model down substantially and I'm guessing the motivation for using frames in the first place was to speed up the simulation.

There is a somewhat cryptic work-around for the slowdown involving the for-iterator block. This will get rid of the algebraic loop and greatly speed up simulation. If you'd like an example model, you're free to email me at schutz123@gmail.com.