⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 rfna_8505.asv

📁 spread spectrum communication will be helpful to you!
💻 ASV
📖 第 1 页 / 共 2 页
字号:
function varargout = rfna_8505(varargin)%  %  PLEASE READ:%                Run this app with the MATLAB editor's built in debugger for demo purposes.   Debug-> Run %                It does not need the hardware to display the user interface. %                Show the Smith Chart mode by selecting the ps11 button. %% % RFNA_8505 Application M-file for rfna_8505.fig%    FIG = RFNA_8505 launch rfna_8505 GUI.%    RFNA_8505('callback_name', ...) invoke the named callback.%    Run either from command window or Matlab editor / debugger (Debug Run )%    This example requires the measurement hardfware for full functionality and is%    provided for reference only. % Last Modified by GUIDE v2.0 06-May-2002 17:23:11if nargin == 0  % LAUNCH GUI	fig = openfig(mfilename,'reuse');	% Generate a structure of handles to pass to callbacks, and store it.    	handles = guihandles(fig);      handles.s(1,1).mag=line('color',[1 0  0],'parent',handles.s11_axis,'linewidth',w);    handles.s(1,1).ph =line('color',[0 0  1],'parent',handles.s11_phase_axis,'linewidth',w);    handles.s(1,2).mag=line('color',[1 0  0],'parent',handles.s12_axis,'linewidth',w);    handles.s(1,2).ph =line('color',[0 0  1],'parent',handles.s12_phase_axis,'linewidth',w);    handles.s(2,1).mag=line('color',[1 0  0],'parent',handles.s21_axis,'linewidth',w);    handles.s(2,1).ph =line('color',[0 0  1],'parent',handles.s21_phase_axis,'linewidth',w);    handles.s(2,2).mag=line('color',[1 0  0],'parent',handles.s22_axis);    handles.s(2,2).ph =line('color',[0 0  1],'parent',handles.s22_phase_axis);                   set(get(handles.s11_axis,'xlabel'),'string','MHz','units','normalized');   set(get(handles.s11_axis,'ylabel'),'string','dB','units','normalized');        set(get(handles.s11_phase_axis,'ylabel'),'string','deg.','units','normalized');   set(get(handles.s11_phase_axis,'title'),'string','S11','units','normalized');    	    set(get(handles.s12_axis,'xlabel'),'string','MHz','units','normalized');   set(get(handles.s12_axis,'ylabel'),'string','dB','units','normalized');        set(get(handles.s12_phase_axis,'ylabel'),'string','deg.','units','normalized');   set(get(handles.s12_phase_axis,'title'),'string','S12','units','normalized');            set(get(handles.s21_axis,'xlabel'),'string','MHz','units','normalized');   set(get(handles.s21_axis,'ylabel'),'string','dB','units','normalized');        set(get(handles.s21_phase_axis,'ylabel'),'string','deg.','units','normalized');   set(get(handles.s21_phase_axis,'title'),'string','S21','units','normalized');            set(get(handles.s22_axis,'xlabel'),'string','MHz','units','normalized');   set(get(handles.s22_axis,'ylabel'),'string','dB','units','normalized');        set(get(handles.s22_phase_axis,'ylabel'),'string','deg.','units','normalized');   set(get(handles.s22_phase_axis,'title'),'string','S22','units','normalized');               guidata(fig, handles);    open_Callback([],[pwd,'\default.rfa'] , handles, []);    	if nargout > 0		varargout{1} = fig;	endelseif ischar(varargin{1}) % INVOKE NAMED SUBFUNCTION OR CALLBACK	%try		if (nargout)			[varargout{1:nargout}] = feval(varargin{:}); % FEVAL switchyard		else			feval(varargin{:}); % FEVAL switchyard		end    %catch		% disp(lasterr);    %endendfunction varargout = all_Callback(h, eventdata, handles, varargin)        s11_Callback(h, eventdata, handles, varargin)        s12_Callback(h, eventdata, handles, varargin)        s21_Callback(h, eventdata, handles, varargin)        s22_Callback(h, eventdata, handles, varargin)        %  MEASUREMENT CORRECTIONS function result = correct(s,input,handles);         result=input;            if ~get(handles.correct,'value')               return; % correction computation is turned off         end;         % convert to x+jy           [x,y]=dbphase2xy(input.mag,input.ph);          f =input.f;                    switch s             case {'s11','s22'}                 Gm=x+j*y;                        m=str2num(s(2));                  % need to interpolate cal data over freq range of input                 load cal_50_thru.rfa -mat                                                 [re,im]=dbphase2xy(data.s(m,m).mag,data.s(m,m).ph);                                 freq=data.s(m,m).freq;                 Xzo=interp1(freq,re+j*im,f,'spline','extrap');                                  load cal_open.rfa -mat                 [re,im]=dbphase2xy(data.s(m,m).mag,data.s(m,m).ph);                                 freq=data.s(m,m).freq;                 Xoc=interp1(freq,re+j*im,f,'spline','extrap');                 %figure                 %plot(freq,re,f,real(Xoc),freq,im,f,imag(Xoc),f,x,f,y)                                  load cal_short.rfa -mat                 [re,im]=dbphase2xy(data.s(m,m).mag,data.s(m,m).ph);                                 freq=data.s(m,m).freq;                 Xsc=interp1(freq,re+j*im,f,'spline','extrap');                 % the following equation was derived using the Symbolic Math Toolbox                 % don't try this by hand, see cor_comp.m                 g=((-Xoc+Xsc).*(Gm-Xzo))./(-Xoc.*Xzo+2*Xoc.*Xsc-Xzo.*Xsc-Gm.*Xoc+2*Gm.*Xzo-Gm.*Xsc);                 [result.mag,result.ph] = xy2dbphase(real(g),imag(g));             case {'s12','s21'}                 Sm=x+j*y;                 m=str2num(s(2));                  n=str2num(s(3));                 % need to interpolate cal data over freq range of input                                  load cal_50_thru.rfa -mat                 [re,im]=dbphase2xy(data.s(m,n).mag,data.s(m,n).ph);                                 freq=data.s(m,n).freq;                 Sout=Sm./(interp1(freq,re+j*im,f,'spline','extrap'));                 [result.mag,result.ph] = xy2dbphase(real(Sout),imag(Sout));                           end;          % --------------------------------------------------------------------function varargout = s11_Callback(h, eventdata, handles, varargin)         result=measure('s11',handles);         result=correct('s11',result,handles);   % the tricky part         set(handles.s(1,1).mag,'xdata',result.f,'ydata',result.mag);         set(handles.s(1,1).ph,'xdata',result.f,'ydata',result.ph);         set([handles.s11_axis,handles.s11_phase_axis],'xlim',[result.f(1),result.f(end)]);         drawnow;         % --------------------------------------------------------------------function varargout = s21_Callback(h, eventdata, handles, varargin)         result=measure('s21',handles);         result=correct('s21',result,handles);            set(handles.s(2,1).mag,'xdata',result.f,'ydata',result.mag);         set(handles.s(2,1).ph,'xdata',result.f,'ydata',result.ph);         set([handles.s21_axis,handles.s21_phase_axis],'xlim',[result.f(1),result.f(end)]);         drawnow;% --------------------------------------------------------------------function varargout = s12_Callback(h, eventdata, handles, varargin)         result=measure('s12',handles);         result=correct('s12',result,handles);            set(handles.s(1,2).mag,'xdata',result.f,'ydata',result.mag);         set(handles.s(1,2).ph,'xdata',result.f,'ydata',result.ph);         set([handles.s12_axis,handles.s12_phase_axis],'xlim',[result.f(1),result.f(end)]);         drawnow;% --------------------------------------------------------------------function varargout = s22_Callback(h, eventdata, handles, varargin)         result=measure('s22',handles);         result=correct('s22',result,handles);            set(handles.s(2,2).mag,'xdata',result.f,'ydata',result.mag);         set(handles.s(2,2).ph,'xdata',result.f,'ydata',result.ph);         set([handles.s22_axis,handles.s22_phase_axis],'xlim',[result.f(1),result.f(end)]);         drawnow;% MEASUREMENT function  result= measure(param,handles)   global SN DISPS RF SPAR   [SN, DISPS, RF, SPAR]=open_network_analyzer;    fprintf(DISPS,'C1I4M1D1D3E,M2D1D3E,I5M1D1D3E,M2D1D3E'); % CLEAR CH1    fprintf(DISPS,'C2I4M1D1D3E,M2D1D3E,I5M1D1D3E,M2D1D3E'); % CLEAR CH2    fprintf(DISPS,'C2I5M3E');           % turn channel 2 on in phase mode      % detect if panel setting are to be used   set(handles.status,'string',[param,' in progress']);     usefrontpannel=get(handles.inst_pannel,'value');   if usefrontpannel        % read freq range, Mode, FA, FB        fprintf(RF,'L');      % learn RF module setup        rf_str = fscanf(RF);   % read it back            range = str2num(rf_str(6));        width = str2num(rf_str(10));        if (width == 1) | (width==2)           % start stop representation.           f_start    = str2num(rf_str(18:21))*10^(range-3);            f_stop     = str2num(rf_str(25:28))*10^(range-3);                 elseif width==4         % center freq & bw representation           FA    = str2num(rf_str(18:21))*10^(range-3);            FB    = str2num(rf_str(25:28))*10^(range-4);           f_start=FA-FB;           f_stop =FA+FB;                 else           close_network_analyzer(SN,RF,DISPS,SPAR)           error        end;        set(handles.fstart_edit,'string',sprintf('%7.2f',f_start));        set(handles.fstop_edit,'string',sprintf('%7.2f',f_stop));   else   % setup freq range and freq limits

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -