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

📄 ui_check_params.m

📁 MATLAB Simulation of OFDM System
💻 M
字号:
function ui_check_params

persistent state;

if isempty(state)
   state = struct('PktLen', '100', 'FreqError', '0', 'ExpDecayTrms', '50', 'SNR','2:2:20', ...
      'PktsPerRun', '1000', 'RxTimingOffset', '-3');
end

curr_obj = gcbo;
obj_tag = get(curr_obj,'Tag');

%对输入的参数进行逻辑检测
switch (obj_tag)
case 'PktLen'
   pkt_len_str = get(curr_obj,'String');
   try
      pkt_len = eval(pkt_len_str);
      if pkt_len <= 0
         set(curr_obj, 'String', state.PktLen);
         errordlg('Packet length must be positive','Invalid input', 'modal');
      else
         state = setfield(state, 'PktLen', pkt_len_str);
      end
   catch
      set(curr_obj,'String', state.PktLen);
      errordlg('Packet length value not a number','Invalid input', 'modal');
   end
case 'FreqError'
   freq_err_str = get(curr_obj, 'String');
   try
      freq_err = eval(freq_err_str);
      state = setfield(state, 'FreqError', freq_err_str);
   catch
      set(curr_obj,'String', state.FreqError);
      errordlg('Frequency error value not a number','Invalid input', 'modal');
   end
case 'AWGN'
   awgn_val = get(curr_obj, 'Value');
      
   if awgn_val == 1
      set(curr_obj, 'Enable', 'inactive')
      exp_decay_chan = findobj('Tag', 'ExponentialDecay');
      set(exp_decay_chan, 'Enable', 'on')
      set(exp_decay_chan, 'Value', 0);
   end
case 'ExponentialDecay'
   exp_decay_val = get(curr_obj, 'Value');
   if exp_decay_val == 1      
      set(curr_obj, 'Enable', 'inactive');
      awgn_chan = findobj('Tag', 'AWGN');
      set(awgn_chan, 'Enable', 'on')
      set(awgn_chan, 'Value', 0);
   end
case 'ExpDecayTrms'
   exp_decay_trms_str = get(curr_obj,'String');
   try
      exp_decay_trms = eval(exp_decay_trms_str);
      if exp_decay_trms < 0
         set(curr_obj, 'String', state.ExpDecayTrms);
         errordlg('Exponential decay T rms cannot be negative','Invalid input', 'modal');
      else
         state = setfield(state, 'ExpDecayTrms', exp_decay_trms_str);      
      end
   catch
      set(curr_obj,'String', state.ExpDecayTrms);
      errordlg('Exponential decay T rms value not a number','Invalid input', 'modal');
   end
case 'SNR'
   snr_str = get(curr_obj,'String');
   try
      snr = eval(snr_str);
      state = setfield(state, 'SNR', snr_str);
   catch
      set(curr_obj,'String', state.SNR);
      errordlg('SNR value not a number','Invalid input', 'modal');
   end

case 'RxTimingOffset'
   rx_timing_offset_str = get(curr_obj,'String');
   try
      rx_timing_offset = eval(rx_timing_offset_str);
      if rx_timing_offset > 0
         set(curr_obj,'String', state.RxTimingOffset);
         errordlg('Rx timing offset positive','Invalid input', 'modal');
      else
         state = setfield(state, 'RxTimingOffset', rx_timing_offset_str);
      end
   catch
      set(curr_obj,'String', state.RxTimingOffset);
      errordlg('Rx timing offset value not a number','Invalid input', 'modal');
   end
case 'PktsToSimulate'
   pkts_to_simulate_str = get(curr_obj, 'String');
   try
      pkts_to_simulate = eval(pkts_to_simulate_str);
      if pkts_to_simulate < 0
         set(curr_obj,'String', state.PktsPerRun);
         errordlg('Packets to simulate cannot be negative','Invalid input', 'modal');
      else
         state = setfield(state, 'PktsPerRun', pkts_to_simulate_str);
      end
   catch
      set(curr_obj,'String', state.PktsPerRun);
      errordlg('Packets to simulate value not a number','Invalid input', 'modal');
   end
otherwise
   
end

⌨️ 快捷键说明

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