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

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

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

Читайте в sparameters и создайте рациональный объект от них. Рациональная функция автоматически соответствует всем записям матриц 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: 38
         Poles: [38x1 double]
      Residues: [2x2x38 double]
    DirectTerm: [2x2 double]
         ErrDB: -42.1289

С настройками по умолчанию на этом примере рациональная функция достигает точности приблизительно-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 object. The axes object 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: -0.4875

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

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

Сожмите целевую точность

Восстановите подгонку, прося более трудный допуск (-60dB), Заметьте, что подгонка значительно улучшена, особенно в полосах задерживания sawfilter.

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

      NumPorts: 2
      NumPoles: 123
         Poles: [123x1 double]
      Residues: [2x2x123 double]
    DirectTerm: [2x2 double]
         ErrDB: -53.7345

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

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

Похожие темы