这个例子展示了如何使用'NPoles'参数来提高输出的质量rationalfit
.默认情况下,rationalfit
函数使用48个或更少的极点来找到与数据最匹配的有理函数。如果48极不够,则可以改变所使用的极数的范围rationalfit
.
首先,读入包含在文件中的带通滤波器数据npoles_bandpass_example.s2p
,并绘制S21
数据。接下来,使用rationalfit
函数来拟合有理函数S21
将“npole”参数设置为默认值,并将结果与原始数据进行可视化比较。最后,使用rationalfit
这一次,指定更多的极点,看看结果是否有所改善。
S = sparameters (“npoles_bandpass_example.s2p”);图次要情节(2,1,1)rfplot (2, 1,“数据库”次要情节(2,1,2)rfplot (S, 2, 1“角”)
使用rfparam
函数来提取S21
值,然后调用rationalfit
.
s21 = rfparam (2, 1);datafreq = S.Frequencies;defaultfit = rationalfit (datafreq s21);
警告:48极时只能达到-13.0 dB的精度,而不是-40.0 dB。考虑使用“npole”参数指定更多的极点。
使用freqresp
函数来计算输出的响应rationalfit
.
respfreq = 2.25 e9:2e5:2.75e9;defaultresp = freqresp (defaultfit respfreq);
将原始数据与计算得到的默认有理函数的频响进行比较rationalfit
.
次要情节(2,1,1)情节(datafreq, 20 * log10 (abs (s21)),“。”)举行在情节(respfreq, 20 * log10 (abs (defaultresp)))从包含(的频率(赫兹)) ylabel (“(dB)级”) defaultnpoles = numel(defaultfit.A);defaultstr = [默认npole(使用)num2str (defaultnpoles),“两极)”];标题(defaultstr)传说(“原始数据”,“默认rationalfit”,“位置”,“最佳”次要情节(2,1,2)情节(datafreq,打开(角(s21)) * 180 /π,“。”)举行在情节(respfreq打开(角(defaultresp)) * 180 / pi)从包含(的频率(赫兹)) ylabel (的角(度))传说(“原始数据”,“默认rationalfit”,“位置”,“最佳”)
分析输出的好坏rationalfit
与原始数据相匹配,似乎当默认值为rationalfit
在带通区域的中心做的比较好,在带通区域的边缘拟合较差。使用一个更复杂的有理函数可能会达到更好的拟合。
符合原S21
数据,但这一次,指导rationalfit
在49到60极点之间使用“非极点”参数。
customfit = rationalfit (s21 datafreq,“NPoles”60, [49]);customresp = freqresp (customfit respfreq);
将原始数据与计算得到的自定义有理函数的频响进行比较rationalfit
.
图次要情节(2,1,1)情节(datafreq, 20 * log10 (abs (s21)),“。”)举行在情节(respfreq, 20 * log10 (abs (customresp)))从包含(的频率(赫兹)) ylabel (“(dB)级”) customnpoles = numel(customfit.A);customstr = [' npole =[49 60](使用'num2str (customnpoles),“两极)”];标题(customstr)传说(“原始数据”,“自定义rationalfit”,“位置”,“最佳”次要情节(2,1,2)情节(datafreq,打开(角(s21)) * 180 /π,“。”)举行在情节(respfreq打开(角(customresp)) * 180 / pi)从包含(的频率(赫兹)) ylabel (的角(度))传说(“原始数据”,“自定义rationalfit”,“位置”,“最佳”)
使用大量极点的配合显然更精确。