rational

Выполните рациональный подбор кривой к комплексным частотно-зависимым данным

Описание

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

Комплексные частоты заданы уравнением:

F(s)=k=1nCksAk+Dгде, s=j×2πfCостаткиAполюсаDпрямой срок

Создание

Описание

fit = rational(freq,data) возвращает рациональный объект со сложными частотами, используя данные заданных вектора частоты и сетевого параметра.

пример

fit = rational(s) возвращает рациональный объект для параметров S N-порта.

fit = rational(___,tol) возвращает рациональный объект fit который удовлетворяет относительную погрешность допуска. Задайте tol после любой комбинации входных аргументов из предыдущих синтаксисов.

[fit,error] = rational(___) также возвращает ошибку подгонки. Используйте любую из комбинаций входных аргументов из предыдущих синтаксисов.

пример

fit = rational(___,Name,Value) устанавливает свойства с помощью одной или нескольких пар "имя-значение". Для примера, fit = rational(s,'Tolerance',-34)устанавливает допуск относительной погрешности в децибелах для fit. Задайте пары "имя-значение" после любого из входных параметров из предыдущих синтаксисов.

Входные параметры

расширить все

Неотрицательные частоты, заданные как вектор неотрицательных частот в Гц.

Типы данных: double

Данные сетевого параметра, заданные как вектор, 2-D массив или трехмерный массив. Длина значений данных должна равняться длине значений частоты.

Относительная погрешность, заданный как скаляр, меньше или равный нулю. tol значение устанавливает вход для 'Tolerance' свойство.

Типы данных: double

N-порт S-параметры, заданные как N -by - N матрица элементов S с одинаковыми полюсами.

Свойства

расширить все

Относительная погрешность, заданный как скаляр, меньше или равный нулю.

Типы данных: double

Поведение подгонки для больших S-параметров, заданное как true или false. Когда true, прямой член в подгонке устанавливается в нуль, так что рациональная подгонка F(S) стремится к нулю, когда S приближается к бесконечности. Когда false, допускается ненулевой прямой термин.

Типы данных: logical

Максимальное количество полюсов, заданное как скаляр неотрицательное целое число.

Типы данных: double

Метрики ошибок в rational объект, заданный как один из следующих:

  • Если вы задаете 'ErrorMetric' как 'default', а rational объект распределяет ошибку равномерно.

  • Если вы задаете 'ErrorMetric' как 'Relative', а rational объект подходит как для peaks, так и для оврагов или получает меньшую ошибку для меньших значений.

Типы данных: char

Игнорирует низкоуровневый шум в данных, заданный как скаляр.

Пример: 'NoiseFloor',-60

Типы данных: double

Отобразите опции алгоритма аппроксимации рационального объекта, заданные как одно из следующего:

  • 'off'- Дисплей отсутствует

  • 'on'- Печатная информация

  • 'plot'- графики прогресса интерполяции

  • 'both'- Как печатная информация, так и графики.

Типы данных: char

Функции объекта

timerespВременной ответ для рационального объекта и rationalfit объект функции
steprespОтвет шагового сигнала для рационального объекта и rationalfit объект функции
freqrespЧастотная характеристика рационального объекта и rationalfit объект функции
pwlresp Вычислите временную характеристику кусочно-линейного входного сигнала
impulseИмпульсная характеристика для объекта рациональной функции
ispassiveВерните true, если rationalfit выход пассивен на всех частотах
makepassiveОбеспечение пассивности rationalfit выход или рациональный объект
passivityГрафик пассивности N -by- N rationalfit вывод функции
generateSPICEСгенерируйте файл SPICE из rationalfit S-параметров

Примеры

свернуть все

Создайте S-параметры из файла с именем passive.s2p.

S = sparameters('passive.s2p');

Выполните рациональный подбор кривой S-параметров.

fit = rational(S);

Создайте объект S-Parameters из файла с именем default.s2p. Выполните рациональный подбор кривой S-параметров.

S = sparameters('default.s2p');
fit = rational(S,'Display', 'plot')

Figure contains an axes. The axes with title Real part of data and response contains 12 objects of type line. These objects represent Data, Response, Matched Points.

Figure contains an axes. The axes with title Imaginary part of data and response contains 12 objects of type line. These objects represent Data, Response, Matched Points.

Figure contains an axes. The axes with title Error (difference between data and response) contains 4 objects of type line. This object represents Error.

fit = 
  rational with properties:

      NumPorts: 2
      NumPoles: 44
         Poles: [44x1 double]
      Residues: [2x2x44 double]
    DirectTerm: [2x2 double]
         ErrDB: -22.6464

Вычислите нули, полюсы, усиление и усиление постоянного тока рационального объекта.

[z,p,k,dcgain] = zpk(fit)
z=2×2 cell array
    {43x1 double}    {43x1 double}
    {43x1 double}    {43x1 double}

p=2×2 cell array
    {44x1 double}    {44x1 double}
    {44x1 double}    {44x1 double}

k = 2×2
109 ×

   -2.5743   -0.0556
   -0.6980   -1.3221

dcgain = 2×2

    0.0933   -0.0302
   -1.1079    0.4746

Создайте объект S-параметров из заданного файла S2P.

S = sparameters('sawfilterpassive.s2p');
f = S.Frequencies;

Создайте rational объект с допуском -40 дБ.

fit = rational(S,-40);

Сравните подгонку с данными. Отклонения можно увидеть при меньших значениях на полулогарифмический график.

dresp = freqresp(fit,f);
plot(f,20*log10(abs(squeeze(S.Parameters(2,1,:)))),...
    f,20*log10(abs(squeeze(dresp(2,1,:)))),f,20*log10(abs(squeeze(S.Parameters(2,1,:)-dresp(2,1,:)))))
title('Default Fitting for sawfilterpassive.s2p');
ylabel('dB');
xlabel('Frequency (Hz)');
legend('Data','Fit','Error','Location','northwest');

Figure contains an axes. The axes with title Default Fitting for sawfilterpassive.s2p contains 3 objects of type line. These objects represent Data, Fit, Error.

Создайте rational объект с 'ErrorMetric' установлено на 'Relative' для соответствия как peaks, так и оврагов.

rfit = rational(S,-40,'ErrorMetric','Relative');

Сравните подгонку с данными. Установлены peaks и овраги.

rresp = freqresp(rfit,f);
figure(2)
plot(f,20*log10(abs(squeeze(S.Parameters(2,1,:)))),...
    f,20*log10(abs(squeeze(rresp(2,1,:)))), f, 20*log10(abs(squeeze(S.Parameters(2,1,:)-rresp(2,1,:)))));
title('Relative Error Fitting for sawfilterpassive.s2p');
ylabel('dB');
xlabel('Frequency (Hz)');
legend('Data','Fit','Error','Location','northwest');

Figure contains an axes. The axes with title Relative Error Fitting for sawfilterpassive.s2p contains 3 objects of type line. These objects represent Data, Fit, Error.

Создайте объект S-параметров из заданного файла S2P.

S = sparameters('passive.s2p');
f = S.Frequencies;
data = S.Parameters;

Установите один из вводов данных равным нулям.

data(2,2,:) = 0;

Создайте rational объект с допуском -40 дБ.

fit = rational(f,data,-40);

Сравните подгонку с данными. Подгонка и данные тесно совпадают.

xresp = freqresp(fit,f);
figure(3)
plot(f,abs(squeeze(data(2,1,:))),f,abs(squeeze(xresp(2,1,:))))

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

Добавьте шум к данным и создайте rational объект.

rng(1);
noisyData = data + 1e-4 * rand(size(S.Parameters));
nfit = rational(f,noisyData,-40);

Сравните подгонку к данным с шумом. Шум не может быть установлен, потому что это данные с более высоким порядком подгонки с худшей метрикой ошибки.

nresp = freqresp(nfit,f);
figure(4)
plot(f,abs(squeeze(noisyData(2,2,:))),f,abs(squeeze(nresp(2,2,:))))

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

Создайте rational объект с шумовым полом -60 дБ и построение графика подгонки. Фиттер игнорирует шум низкого уровня.

ffit = rational(f,noisyData,-40,'NoiseFloor',-60);
fresp = freqresp(ffit,f);
figure(5)
plot(f,abs(squeeze(noisyData(2,2,:))),f,abs(squeeze(fresp(2,2,:))))

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

См. также

Введенный в R2020a