Matlab提取S参数文件中的相关数据并画图

零壹电子 2024-06-10 14:35:03 阅读 73

目录

学习目标:

背景介绍:

学习内容:

一、 Matlab提取S参数相关函数用法简介

sparameters()用法:

rfparam()用法:

二、提取到的数据画图举例

三、总结:


学习目标:

能熟练使用Matlab提取S参数(一般是s2p文件)并画图分析。

背景介绍:

七月份毕业入坑射频行业,经常需要处理大量数据,其中就包括矢量网络分析仪采集到的S参数,由于实验室电脑没有ADS,便打算用Matlab进行数据的提取和画图分析,写这篇文章的目的主要是记录自己的学习成果,同时也给有需要的同行们分享自己学到的一些的东西。

学习内容:

一、 Matlab提取S参数相关函数用法简介

很多二端口射频芯片的DataSheets通常都是把S11、S21、S12、S22分别画在同一张图中的形式呈现,本人用到的主要函数有sparameters()和rfparam()。

sparameters()用法:

sparameters()函数可以返回一个s2p文件的S-parameters object,在matlab命令行窗口可以看到它的返回值如下:

提取频率(单位为GHz)数据如下:

filename = "E:\Matlab Projects\S参数\2.s2p";S = sparameters(filename); % S里面包含:Impedance,NumPorts,Frequencies,Parametersdisp(S);FreqGHz = S.Frequencies/1e9; %提取出频点disp(FreqGHz);

rfparam()用法:

rfparam(obj,i,j) 能返回S-parameter Sij,比如:rfparam(S,2,1)就返回S21复数形式的列数据,其中S是指sparameters()函数的返回值,代码和返回值如下:

filename = "E:\Matlab Projects\S参数\2.s2p";S = sparameters(filename);FreqGHz = S.Frequencies/1e9;S21 = rfparam(S,2,1); % rfparam(S,2,1)中,2指数据文件保存时对应的矢网端口2;同理,1指端口1.

为了直观查看数据对应的回波损耗、增益、反向隔离度的dB值,采用了对数转换计算,代码和返回值如下:

filename = "E:\Matlab Projects\S参数\2.s2p";S = sparameters(filename);S11 = 20*log10(abs(rfparam(S,1,1))); %提取S11对应的dB值S21 = 20*log10(abs(rfparam(S,2,1))); %提取S21对应的dB值S12 = 20*log10(abs(rfparam(S,1,2))); %提取S12对应的dB值S22 = 20*log10(abs(rfparam(S,2,2))); %提取S22对应的dB值disp([S11,S21,S12,S22]); %显示[S11,S21,S12,S22]二位数组的值

二、提取到的数据画图举例

前面已经能提取S参数数据了,接下来就是通过画图展现,就直接用plot()函数画图即可,如下是代码和图片演示:

clcclearclose allfilename = "E:\Matlab Projects\S参数\2.s2p";S = sparameters(filename);FreqGHz = S.Frequencies/1e9;S11 = 20*log10(abs(rfparam(S,1,1))); S21 = 20*log10(abs(rfparam(S,2,1)));S12 = 20*log10(abs(rfparam(S,1,2)));S22 = 20*log10(abs(rfparam(S,2,2)));figure(1)plot(FreqGHz,S11);hold on; %画图grid on; %添加网格xlim([FreqGHz(1) FreqGHz(end)]); %X轴上下限设置legend("S11",'Location','best'); %添加图例title("S11 vs Frequency"); %添加图表标题xlabel("Frequency(GHz)"); %添加X轴标签ylabel("S11(dB)"); %添加y轴标签figure(2)plot(FreqGHz,S21);hold on; %画图grid on; %添加网格xlim([FreqGHz(1) FreqGHz(end)]); %X轴上下限设置legend("S21",'Location','best'); %添加图例title("S21 vs Frequency"); %添加图表标题xlabel("Frequency(GHz)"); %添加X轴标签ylabel("S21(dB)"); %添加y轴标签figure(3)plot(FreqGHz,S12);hold on; %画图grid on; %添加网格xlim([FreqGHz(1) FreqGHz(end)]); %X轴上下限设置legend("S12",'Location','best'); %添加图例title("S12 vs Frequency"); %添加图表标题xlabel("Frequency(GHz)"); %添加X轴标签ylabel("S12(dB)"); %添加y轴标签figure(4)plot(FreqGHz,S22);hold on; %画图grid on; %添加网格xlim([FreqGHz(1) FreqGHz(end)]); %X轴上下限设置legend("S22",'Location','best'); %添加图例title("S22 vs Frequency"); %添加图表标题xlabel("Frequency(GHz)"); %添加X轴标签ylabel("S22(dB)"); %添加y轴标签

三、总结:

以上便是本菜鸟工作接近四个月总结的一小部分Matlab提取S参数画图的程序,当然也可以批量获取不同温度或者不同电压下的数据画在同一张图中做对比,感兴趣的小伙伴可以一起交流哦。



声明

本文内容仅代表作者观点,或转载于其他网站,本站不以此文作为商业用途
如有涉及侵权,请联系本站进行删除
转载本站原创文章,请注明来源及作者。