I'm currently working on a project where I'm implementing different filter types (e.g. iirs - direct form 1, 2, transposed 1, 2, etc.). I just recently started attempting to implement a second order section filter. This filter is made up of a cascade of biquad filters each implemented as transposed direct form 2 stages.
After implementing this, I wanted to verify that my results matched those in MATLAB. I opened up the filter design toolkit and generated an 8th order SOS filter. When I exported this filter, it exports both a SOS matrix along with a scaling array G.
So my question: Why does MATLAB provide this scaling array G? Shouldn't the SOS matrix be fully capable of describing the filter by itself? Why does MATLAB decide to factor out these gains?
Is this just a courtesy of MATLAB, such that the user can 'fine tune' each filter stage gain to determine the best option?