exponenta event banner

Использование рационального объекта для подгонки S-параметров

В этом примере показано, как использовать рациональный объект для создания рационального вписывания в данные S-параметров, а также различные свойства и методы, включенные в рациональный объект.

Создание рационального объекта

Прочитайте в спараметрах и создайте из них рациональный объект. Рациональная функция автоматически подходит для всех записей матриц S-параметров.

S = sparameters('sawfilter.s2p')
S = 
  sparameters: S-parameters object

       NumPorts: 2
    Frequencies: [334x1 double]
     Parameters: [2x2x334 double]
      Impedance: 50

  rfparam(obj,i,j) returns S-parameter Sij

r = rational(S)
r = 
  rational with properties:

      NumPorts: 2
      NumPoles: 30
         Poles: [30x1 double]
      Residues: [2x2x30 double]
    DirectTerm: [2x2 double]
         ErrDB: -41.2811

С настройками по умолчанию в этом примере рациональная функция достигает точности около -26 дБ, используя 30 полюсов. По построению рациональный объект является причинным, с ненулевым прямым термином.

Сравнение соответствия с исходными данными

Создайте частотную характеристику из рационального объекта и сравните одну из записей с исходными данными.

resp = freqresp(r, S.Frequencies);
plot(S.Frequencies, real(rfparam(S, 1, 1)), ...
    S.Frequencies, real(squeeze(resp(1,1,:))))

Figure contains an axes. The axes contains 2 objects of type line.

Предельное количество полюсов

Повторите посадку, ограничив число полюсов максимум 5. Рациональный объект может использовать меньше полюсов, чем указано. Обратите внимание, что качество посадки ухудшается по сравнению с первоначальной посадкой на 30 полюсов.

r5 = rational(S, 'MaxPoles', 5)
r5 = 
  rational with properties:

      NumPorts: 2
      NumPoles: 4
         Poles: [4x1 double]
      Residues: [2x2x4 double]
    DirectTerm: [2x2 double]
         ErrDB: -1.1618

resp5 = freqresp(r5, S.Frequencies);
plot(S.Frequencies, real(rfparam(S, 1, 1)), ...
    S.Frequencies, real(squeeze(resp5(1,1,:))))

Figure contains an axes. The axes contains 2 objects of type line.

Подтянуть точность цели

Повторная посадка, требующая более жесткого допуска (-60 дБ). Обратите внимание, что посадка значительно улучшена, особенно в стопорных полосах пилофильтра.

rgood = rational(S, -60)
rgood = 
  rational with properties:

      NumPorts: 2
      NumPoles: 202
         Poles: [202x1 double]
      Residues: [2x2x202 double]
    DirectTerm: [2x2 double]
         ErrDB: -54.1050

respgood = freqresp(rgood, S.Frequencies);
plot(S.Frequencies, real(rfparam(S, 1, 1)), ...
    S.Frequencies, real(squeeze(respgood(1,1,:))))

Figure contains an axes. The axes contains 2 objects of type line.

Связанные темы