Беру полосовой фильтр 4-го порядка, такой:
Код
z plane Denominator Numerator
0 1.000000000E+000 4.897393680E-002
1 3.156595753E+000 1.382087237E-001
2 4.297982543E+000 1.831212979E-001
3 2.864855754E+000 1.382087237E-001
4 8.248016793E-001 4.897393680E-002
В Octave:
Код
tf2sos([4.897393680E-002, 1.382087237E-001, 1.831212979E-001, 1.382087237E-001, 4.897393680E-002], [1.000000000E+000, 3.156595753E+000,
4.297982543E+000, 2.864855754E+000, 8.248016793E-001])
ans =
0.048974 0.093684 0.048974 1.000000 1.675990 0.919131
1.000000 0.909161 1.000000 1.000000 1.480605 0.897371
Так и должно быть? Коэффициенты - эллиптического фильтра из ELLF.EXE (Copyright 2014 by Stephen L. Moshier,
http://www.moshier.net/ellf.zip). На входе tf2sos 10 коэффициентов, 9 не считая a0. А на выходе 12 коэффициентов, из них значащих всего 8. Немного странно. Или это свойство эллиптического фильтра?
Вот Баттерворт с той же полосой:
Код
z plane Denominator Numerator
0 1.000000000E+000 7.242292251E-003
1 3.118290694E+000 0.000000000E+000
2 4.185016757E+000 -1.448458450E-002
3 2.742317079E+000 0.000000000E+000
4 7.742169529E-001 7.242292251E-003
Octave:
Код
tf2sos([7.242292251E-003, 0.000000000E+000, -1.448458450E-002, 0.000000000E+000, 7.242292251E-003], [1.000000000E+000, 3.118290694E+000, 4.185016757E+000, 2.742317079E+000, 7.742169529E-001])
ans =
0.0072423 0.0144846 0.0072423 1.0000000 1.6355921 0.8908491
1.0000000 -2.0000000 1.0000000 1.0000000 1.4826986 0.8690775
Нужно проверять работу таких каскадов. Отпишусь по результатам.
Удивительно, но это работает!
Вставил результат tf2sos, всего два каскада, после пересчёта в 16-бит целые в цепочку фильтров модели системы. Работает!

Не думал, что так просто. Потратил много времени на самообучение, многое понял, но результата не было до сих пор. Нужно было спросить совета раньше.
andyp, спасибо за помощь!