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

📄 rfna_8505.m

📁 spread spectrum communication will be helpful to you!
💻 M
📖 第 1 页 / 共 2 页
字号:
           close_network_analyzer(SN,RF,DISPS,SPAR)           error         end;                range= 1+ (f_stop>13) + (f_stop>130);  % clever those hp dudes         switch range           case 1              % < 13 MHz              fprintf(RF,['R1W1FA',strrep(sprintf('%4.0f',f_start*100),' ','0'),'FB',strrep(sprintf('%4.0f',f_stop*100),' ','0'),'E']);             case 2              fprintf(RF,['R2W1FA',strrep(sprintf('%4.0f',f_start*10),' ','0'),'FB',strrep(sprintf('%4.0f',f_stop*10),' ','0'),'E']);             case 3              fprintf(RF,['R3W1FA',strrep(sprintf('%4.0f',f_start),' ','0'),'FB',strrep(sprintf('%4.0f',f_stop),' ','0'),'E']);          end;    % note the "E" = Execute     end;      fprintf(DISPS,'C3I1M1E');              %  turn electrical line compensation off     fprintf(DISPS,'C3I2M1E');       fprintf(DISPS,'L');                    % learn DISPlay module setup   disp_str = fscanf(DISPS);   ref_c1=str2num(disp_str(15:20))/100;   % channel 1 reference level  (div by 100 for dB)   ref_c2=str2num(disp_str(31:36))/10;    % channel 2 reference level  (div by 10 for phase)   per_div.ph    =[180 90 45 20 10  5  2  1];   per_div.mag   = [20 10  5  2  1 .5 .2 .1];   mscale=2;         % start with 10 dB per div   pscale=3;         % and 45 deg/div for phase    autorange=get(handles.autorange,'value');   d=0.5;   % need to pause or ref_c1 setting gets hosed in autoscale mode   for k=1:1+autorange       fprintf(SN,'AB');   % stop current measurement in storage normalizer        switch param          case 's11'                fprintf(SPAR,'1');           % 1 is forward, 2 is reverse                pause(d)                fprintf(DISPS,['C1I4M2S',int2str(mscale),'E']);  % A/R, Mag                fprintf(DISPS,['C2I4M3S',int2str(pscale),'E']);  % A/R, Phase          case 's12'                fprintf(SPAR,'2');           % 1 is forward, 2 is reverse                pause(d)                fprintf(DISPS,['C1I4M2S',int2str(mscale),'E']);  % A/R, Mag                fprintf(DISPS,['C2I4M3S',int2str(pscale),'E']);  % A/R, Phase                       case 's21'                fprintf(SPAR,'1');           % 1 is forward, 2 is reverse                pause(d)                fprintf(DISPS,['C1I5M2S',int2str(mscale),'E']);  % B/R, Mag                fprintf(DISPS,['C2I5M3S',int2str(pscale),'E']);  % B/R, Phase          case 's22'                fprintf(SPAR,'2');           % 1 is forward, 2 is reverse                pause(d)                fprintf(DISPS,['C1I5M2S',int2str(mscale),'E']);  % B/R, Mag                fprintf(DISPS,['C2I5M3S',int2str(pscale),'E']);  % B/R, Phase       end;       fprintf(SN,'S2C1I2C2I2TS2'); %turn c1 & c2 on, 2 sweeps (ts2) to get mag & phase       fprintf(SN,'EX');       fprintf(SN,'P3');    % select Page 3 , implicit AB        ch1str=fscanf(SN);   % fetch mag in dB result       fprintf(SN,'P4');    % select Page 4 , implicit AB        ch2str=fscanf(SN);   % fetch phase result            % results should be the same size, but sometimes thay are not       %     lch1=length(ch1str)      %     lch2=length(ch2str)      %     [ch1str(1:20);ch2str(1:20)]      %     ch1str(2960:end)      %     ch2str(2960:end)      % end;              x_end=2980;                                         % empirically determined ending point        x_beg=5;                                            % ditto        dB_scale =per_div.mag(mscale)*10/500;               % if mag in dB and 10 db per div 100/500=0.2          x1=dB_scale*str2num(ch1str(x_beg:x_end))+ref_c1;    % trim bogus data, add ref offset       deg_scale=per_div.ph(pscale)*8/400; %          x2=deg_scale*str2num(ch2str(x_beg:x_end))+ref_c2;   % trim bogus data, add ref offset             N= min(length(x2),length(x1));       result.mag= x1(1:N);       result.ph = x2(1:N);       result.f  = f_start+(0:(N-1))'*(f_stop-f_start)/N;          % need this if autoranging       % mag and phase spread        if autorange & (k==1)          min_mag = min(result.mag);             max_mag= max(result.mag);          ref_c1 = round((min_mag+max_mag)/2);        % new reference level          if ref_c1>=0 s='+'; else  s='-'; end;          sm=['C1M2R',s,sprintf('%04i',abs(round(ref_c1*100))),'E'];          fprintf(DISPS,sm);          usedmag_per_div =  (max_mag-min_mag)/10;   % 10 dB per div initial measurement          mscale=sum(usedmag_per_div<=per_div.mag);  % new mscale                  % do same for phase          [min_ph,i1] = min(result.ph);          [max_ph,i2] = max(result.ph);                   % ph_min_max=[min_ph,max_ph]          ref_c2 = round((min_ph+max_ph)/2);                  if ref_c2>=0 s='+'; else  s='-'; end;          sp=['C2M3R',s,sprintf('%04i',abs(round(ref_c2*10))),'E'];          fprintf(DISPS,sp);          usedph_per_div=(max_ph-min_ph)/8;         % 360 phase should map to 45 deg / div          pscale=sum(usedph_per_div <= per_div.ph); % new pscale      end;   end;      % restore condictions that were read back from panel setup   fprintf(DISPS,[disp_str,'E']);   fprintf(RF,[rf_str,'E']);   fprintf(SN,'EX');    % resume normal measurement process   close_network_analyzer(SN,DISPS,RF,SPAR);   set(handles.status,'string',[param,' complete']);% --------------------------------------------------------------------% --------------------------------------------------------------------function varargout = open_Callback(h, eventdata, handles, varargin)      if isempty(eventdata)          [file_n,path_n]=uigetfile([pwd,'\*.rfa'],'Open File',0.5,0.5);           path_file=[path_n,file_n];          if isempty(file_n)             return          end;       else           path_file=eventdata;       end;      s=load(path_file,'-mat');      data=s.data;      for k=1:2          for p=1:2              set(handles.s(k,p).mag,'xdata',data.s(k,p).freq, 'ydata',data.s(k,p).mag);              set(get(handles.s(k,p).mag,'parent'),'xlim',data.s(k,p).freq([1,end]));              set(handles.s(k,p).ph,'xdata',data.s(k,p).freq, 'ydata',data.s(k,p).ph);              set(get(handles.s(k,p).ph,'parent'),'xlim',data.s(k,p).freq([1,end]));          end;      end% --------------------------------------------------------------------function varargout = save_Callback(h, eventdata, handles, varargin)% --------------------------------------------------------------------function varargout = save_as_Callback(h, eventdata, handles, varargin)                  for k=1:2                      for p=1:2                          data.s(k,p).freq = get(handles.s(k,p).mag,'xdata');  % this has cal factor                          data.s(k,p).mag  = get(handles.s(k,p).mag,'ydata');  % if cal factor was applied                          data.s(k,p).ph   = get(handles.s(k,p).ph,'ydata');   % which may be the way to go                      end;                  end                  [file_n,path_n]=uiputfile([pwd,'\*.rfa'],'Save File',0.5,0.5);                   if isempty(file_n)                      return                  end;                                    % check for rfa extension                  p=findstr(file_n,'.');                  if ~isempty(p)                     % force it                     temp=file_n(1:(p-1));                     file_n=temp;                  end;                  file_n=[file_n,'.rfa'];                  file_path=[path_n,file_n];                  save(file_path,'data','-mat');                  % --------------------------------------------------------------------function varargout = ps_Callback(h, eventdata, handles, varargin)                     name=eventdata;                     tag=[eventdata,'_plot'];                     h_fig=findobj('tag',tag);                     if isempty(h_fig)                        h_fig=rfna_plot;                        set(h_fig,'tag',tag,'name',name);                     else                        figure(h_fig);                      end;                     k = str2num(name(2)); p = str2num(name(3));                     data.freq = get(handles.s(k,p).mag,'xdata');                     data.mag  = get(handles.s(k,p).mag,'ydata');                     data.ph   = get(handles.s(k,p).ph,'ydata');                     data.name = name;                     rfna_plot('plot_data',h_fig,data,guidata(h_fig));% --------------------------------------------------------------------function varargout = fstart_edit_Callback(h, eventdata, handles, varargin)% --------------------------------------------------------------------function varargout = fstop_edit_Callback(h, eventdata, handles, varargin)% --------------------------------------------------------------------function varargout = inst_pannel_Callback(h, eventdata, handles, varargin)% --------------------------------------------------------------------function varargout = autorange_Callback(h, eventdata, handles, varargin)% --------------------------------------------------------------------function varargout = correct_Callback(h, eventdata, handles, varargin)

⌨️ 快捷键说明

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