exponenta event banner

рациональный

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

Описание

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

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

F (s)  =∑k=1nCks−Ak+Dwhere, s = j × 2āfC − residureA − polesD − прямой член

Создание

Описание

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 или массив 3-D. Длина значений данных должна быть равна длине значений частоты.

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

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

S-параметры N-порта, определяемые как матрица N-на-N элементов S, совместно использующих идентичные полюса.

Свойства

развернуть все

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

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

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

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

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

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

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

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

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

Типы данных: 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' для соответствия как вершинам, так и долинам.

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

Сравните соответствие с данными. Установлены вершины и долины.

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 dB и постройте график посадки. Слесарь игнорирует низкий уровень шума.

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