В этом примере показано, как протестировать, визуализируйте и осуществите пассивность выхода от rationalfit
функция.
Анализ временного интервала и симуляция зависят критически от способности преобразовать данные S-параметра частотного диапазона в причинные, устойчивые, и пассивные представления временного интервала. Поскольку rationalfit
функционируйте гарантирует, что все полюса находятся в левой полуплоскости, rationalfit
выход является и устойчивым и причинным конструкцией. Проблемой является пассивность.
Данные S-параметра N-порта представляют зависимую частотой передаточную функцию H (f). Можно создать объект S-параметров в RF Toolbox™ путем чтения файла Touchstone®, такого как passive.s2p
, в sparameters
функция.
Можно использовать the ispassive
функционируйте, чтобы проверять пассивность данных S-параметра и passivity
функционируйте, чтобы построить 2-норму N x N матрицы H (f) на каждой частоте данных.
S = sparameters('passive.s2p');
ispassive(S)
ans = logical
1
passivity(S)
rationalfit
Выведите пассивностьrationalfit
функция преобразует N-порт sparameter данные, S
в матрицу NxN rfmodel.rational
объекты. Используя ispassive
функция на N x N подходящий выход сообщает об этом даже если входные данные S
пассивный элемент, выходная подгонка не является пассивным элементом. Другими словами, норма H (f) больше один на некоторой частоте в области значений [0, Inf].
passivity
функционируйте берет N x N подгонка, как введено и строит ее пассивность. Это - график верхней границы нормы (H (f)) на [0, Inf], также известный как H-норму-по-бесконечности.
fit = rationalfit(S); ispassive(fit)
ans = logical
0
passivity(fit)
makepassive
функционируйте берет в качестве входа N x N массив подходящих объектов и также исходных данных S-параметра, и производит пассивную подгонку при помощи выпуклых методов оптимизации, чтобы оптимально совпадать с данными входа S
S-параметра в то время как удовлетворяющие ограничения пассивности. Остатки C и проходная матрица D выхода
pfit
изменяются, но полюса выхода pfit идентичны полюсам входной подгонки.
pfit = makepassive(fit,S,'Display','on');
ITER H-INFTY NORM FREQUENCY ERRDB CONSTRAINTS 0 1 + 1.791e-02 17.6816 GHz -40.4702 1 1 + 2.878e-04 275.332 MHz -40.9167 5 2 1 + 9.284e-05 365.565 MHz -40.9093 7 3 1 - 3.244e-07 368.334 MHz -40.906 9
ispassive(pfit)
ans = logical
1
passivity(pfit)
all(vertcat(pfit(:).A) == vertcat(fit(:).A))
ans = logical
1
makepassive
с предписанными полюсами и нулем C и DПродемонстрировать, что только C и D изменяются makepassive
, можно обнулить C и D и повторно выполнить makepassive
. Выход, pfit
все еще имеет те же полюса как входная подгонка. Различия между pfit
и pfit2
возникните из-за различных начальных точек выпуклой оптимизации.
Можно использовать эту функцию makepassive
функционируйте, чтобы произвести пассивную подгонку из предписанного набора полюсов без любой идеи запустить C и D.
for k = 1:numel(fit) fit(k).C(:) = 0; fit(k).D(:) = 0; end pfit2 = makepassive(fit,S); passivity(pfit2)
all(vertcat(pfit2(:).A) == vertcat(fit(:).A))
ans = logical
1
generateSPICE
функционируйте берет пассивную подгонку и генерирует эквивалентную схему как SPICE subckt файл. Входная подгонка является N x N массив rfmodel.rational
объекты, как возвращено rationalfit с S-параметры возражают, как введено. Сгенерированный файл является моделью SPICE, созданной только из пассивного элемента R, L, C элементы и управляемые исходные элементы E, F, G, и H.
generateSPICE(pfit2,'mypassive.ckt') type mypassive.ckt
* Equivalent circuit model for mypassive.ckt .SUBCKT mypassive po1 po2 Vsp1 po1 p1 0 Vsr1 p1 pr1 0 Rp1 pr1 0 50 Ru1 u1 0 50 Fr1 u1 0 Vsr1 -1 Fu1 u1 0 Vsp1 -1 Ry1 y1 0 1 Gy1 p1 0 y1 0 -0.02 Vsp2 po2 p2 0 Vsr2 p2 pr2 0 Rp2 pr2 0 50 Ru2 u2 0 50 Fr2 u2 0 Vsr2 -1 Fu2 u2 0 Vsp2 -1 Ry2 y2 0 1 Gy2 p2 0 y2 0 -0.02 Rx1 x1 0 1 Cx1 x1 0 2.73023898465345e-12 Gx1_1 x1 0 u1 0 -2.06037605144133 Rx2 x2 0 1 Cx2 x2 0 7.77758888480764e-12 Gx2_1 x2 0 u1 0 -2.91719783970176 Rx3 x3 0 1 Cx3 x3 0 2.29141629324121e-11 Gx3_1 x3 0 u1 0 -0.544091742748738 Rx4 x4 0 1 Cx4 x4 0 9.31845201307192e-11 Gx4_1 x4 0 u1 0 -0.654513258312122 Rx5 x5 0 1 Cx5 x5 0 4.89917766088437e-10 Gx5_1 x5 0 u1 0 -0.0811505031955087 Rx6 x6 0 1 Fxc6_7 x6 0 Vx7 18.7423819585287 Cx6 x6 xm6 3.95175907370729e-09 Vx6 xm6 0 0 Gx6_1 x6 0 u1 0 -0.0922184581251887 Rx7 x7 0 1 Fxc7_6 x7 0 Vx6 -0.0837926412097417 Cx7 x7 xm7 3.95175907370729e-09 Vx7 xm7 0 0 Gx7_1 x7 0 u1 0 0.00772722817459953 Rx8 x8 0 1 Cx8 x8 0 1.2549042562048e-08 Gx8_1 x8 0 u1 0 -0.947642257963949 Rx9 x9 0 1 Cx9 x9 0 2.73023898465345e-12 Gx9_2 x9 0 u2 0 -2.08387060892649 Rx10 x10 0 1 Cx10 x10 0 7.77758888480764e-12 Gx10_2 x10 0 u2 0 -2.92726520533151 Rx11 x11 0 1 Cx11 x11 0 2.29141629324121e-11 Gx11_2 x11 0 u2 0 -0.607552950340464 Rx12 x12 0 1 Cx12 x12 0 9.31845201307192e-11 Gx12_2 x12 0 u2 0 -0.692661355009945 Rx13 x13 0 1 Cx13 x13 0 4.89917766088437e-10 Gx13_2 x13 0 u2 0 -0.0860909479346456 Rx14 x14 0 1 Fxc14_15 x14 0 Vx15 18.375614752664 Cx14 x14 xm14 3.95175907370729e-09 Vx14 xm14 0 0 Gx14_2 x14 0 u2 0 -0.0931990234760161 Rx15 x15 0 1 Fxc15_14 x15 0 Vx14 -0.0854650964338079 Cx15 x15 xm15 3.95175907370729e-09 Vx15 xm15 0 0 Gx15_2 x15 0 u2 0 0.00796526352891445 Rx16 x16 0 1 Cx16 x16 0 1.2549042562048e-08 Gx16_2 x16 0 u2 0 -0.948029916705958 Gyc1_1 y1 0 x1 0 -0.139050954236442 Gyc1_2 y1 0 x2 0 -0.0228458567013313 Gyc1_3 y1 0 x3 0 -1 Gyc1_4 y1 0 x4 0 -1 Gyc1_5 y1 0 x5 0 1 Gyc1_6 y1 0 x6 0 -1 Gyc1_7 y1 0 x7 0 -1 Gyc1_8 y1 0 x8 0 0.999808223323855 Gyc1_9 y1 0 x9 0 1 Gyc1_10 y1 0 x10 0 -1 Gyc1_11 y1 0 x11 0 0.809862556438535 Gyc1_12 y1 0 x12 0 0.941821208342022 Gyc1_13 y1 0 x13 0 -0.935048415590255 Gyc1_14 y1 0 x14 0 0.988844937737922 Gyc1_15 y1 0 x15 0 0.953968084602726 Gyc1_16 y1 0 x16 0 -1 Gyd1_1 y1 0 u1 0 0.603148969756518 Gyd1_2 y1 0 u2 0 -0.352295596552026 Gyc2_1 y2 0 x1 0 1 Gyc2_2 y2 0 x2 0 -1 Gyc2_3 y2 0 x3 0 0.900724125747921 Gyc2_4 y2 0 x4 0 0.996966344122147 Gyc2_5 y2 0 x5 0 -0.991555504294347 Gyc2_6 y2 0 x6 0 0.997614771592662 Gyc2_7 y2 0 x7 0 0.961714018242248 Gyc2_8 y2 0 x8 0 -1 Gyc2_9 y2 0 x9 0 -0.26566857056782 Gyc2_10 y2 0 x10 0 0.0684861292708228 Gyc2_11 y2 0 x11 0 -1 Gyc2_12 y2 0 x12 0 -1 Gyc2_13 y2 0 x13 0 1 Gyc2_14 y2 0 x14 0 -1 Gyc2_15 y2 0 x15 0 -1 Gyc2_16 y2 0 x16 0 0.999979862628444 Gyd2_1 y2 0 u1 0 -0.337190608715223 Gyd2_2 y2 0 u2 0 0.70019451349198 .ENDS