matlab程控提高篇 #
操作系统:Windows7 IDE:matlab2019b Visa版本:17.5 通信方式:LAN
在开发之前请确保已配置visa开发环境,参考 Visa开发环境搭建
运行本例程序后,将依次输出:S12幅度迹线的标准差、S12相位迹线的标准差、S21幅度迹线的标准差、S21相位迹线的标准差。下面具体介绍整个实现过程。
第一步:打开matlab并新建脚本 #
这里我新建的脚本命名为:demo1
脚本中输入以下代码:
vi=visa('ni','TCPIP0::172.16.1.201::5025::SOCKET');%在第二步中我使用的是NI的visa库,所以这里是'ni',若要使用agilent或者keysight的要做相应的改变。TCPIP0::TCPIP0::172.16.1.201::5025::SOCKET为网络分析仪的IP地址和端口号。这里使用的是我的配置,要根据自己的情况进行改动。
fopen(vi);
clrdevice(vi);
fprintf(vi,"*RST");%复位指令
fprintf(vi,":SENS:BWID 1KHZ");%设置中频带宽为1KHZ
fprintf(vi,":SENS:FREQ:CENT 10000000");%键入中心频率
pause(1);
%测量S12幅度迹线的标准差
fprintf(vi,":DISP:WIND:TRAC1:DEL");%删除轨迹
fprintf(vi,":CALCulate1:PARameter:DEF 'CH1',S12");%在通道1上创建测量名为‘CH1’,测量参数为S12的测量
fprintf(vi,":DISP:WIND:TRAC1:FEED 'CH1'");%创建轨迹1并将其与测量名称为‘CH1’的测量相关联,之后在窗口1中显示。
fprintf(vi,":CALCulate1:PARameter:SEL 'CH1'");%设置名称为‘CH1’的测量为通道1的当前选择测量。
fprintf(vi,":CALCulate1:FORMat MLOGarithmic");%设置通道1当前选择轨迹的显示格式为对数幅度。
fprintf(vi,":CALCulate1:FUNCtion:STAT:STAT ON");%显示通道1轨迹统计。
fprintf(vi,":CALCulate1:FUNCtion:TYPE STDEV ");%设置通道1轨迹统计返回数据类型为标准偏差。
pause(1);%延时,给分析仪足够的时间进行计算
qr=query(vi,":CALCulate1:FUNCtion:DATA?");%查询这个数值
fprintf(qr);
%测量S12相位迹线的标准差
fprintf(vi,":CALCulate1:PARameter:DEF 'CH2',S12");
fprintf(vi,":DISP:WIND:TRAC2:FEED 'CH2'");
fprintf(vi,":CALCulate1:PARameter:SEL 'CH2'");
fprintf(vi,":CALCulate1:FORMat PHASe");
fprintf(vi,":CALCulate1:FUNCtion:STAT:STAT ON");
fprintf(vi,":CALCulate1:FUNCtion:TYPE STDEV ");
pause(1);
qr=query(vi,":CALCulate1:FUNCtion:DATA?");
fprintf(qr);
%测量S21幅度迹线的标准差
fprintf(vi,":CALCulate1:PARameter:DEF 'CH3',S21");
fprintf(vi,":DISP:WIND:TRAC3:FEED 'CH3'");
fprintf(vi,":CALCulate1:PARameter:SEL 'CH3'");
fprintf(vi,":CALCulate1:FORMat MLOGarithmic");
fprintf(vi,":CALCulate1:FUNCtion:STAT:STAT ON");
fprintf(vi,":CALCulate1:FUNCtion:TYPE STDEV ");
pause(1);
qr=query(vi,":CALCulate1:FUNCtion:DATA?");
fprintf(qr);
%测量S21相位迹线的标准差
fprintf(vi,":CALCulate1:PARameter:DEF 'CH4',S21");
fprintf(vi,":DISP:WIND:TRAC4:FEED 'CH4'");
fprintf(vi,":CALCulate1:PARameter:SEL 'CH4'");
fprintf(vi,":CALCulate1:FORMat PHASe");
fprintf(vi,":CALCulate1:FUNCtion:STAT:STAT ON");
fprintf(vi,":CALCulate1:FUNCtion:TYPE STDEV ");
pause(1);
qr=query(vi,":CALCulate1:FUNCtion:DATA?");
fprintf(qr);
fclose(vi);
delete(vi);
clear vi;
第二步:运行程序 #
运行程序后主页显示:
矢量网络分析仪界面显示: