www.gusucode.com > 实现不同收发天线数,不同调制方式下的误比特率测量matlab源码程序 > MIMO程序/ui_check_params.m

    function ui_check_params

persistent state;

if isempty(state)
   state = struct('FrmLen', '130', 'NumofPkt', '100','corr_value','0');
end

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

% performs logical check on input parameters
switch (obj_tag)
case 'FrmLen'
   Frm_len_str = get(curr_obj,'String');
   try
      Frm_len = eval(Frm_len_str);
      if Frm_len <= 0
         set(curr_obj, 'String', state.FrmLen);
         errordlg('Frame length must be positive','Invalid input', 'modal');
      else
         state = setfield(state, 'FrmLen', Frm_len_str);
      end
   catch
      set(curr_obj,'String', state.FrmLen);
      errordlg('Frame length value not a number','Invalid input', 'modal');
   end
   
case 'NumofPkt'
       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.NumofPkt);
         errordlg('Packets to simulate cannot be negative','Invalid input', 'modal');
      else
         state = setfield(state, 'NumofPkt', pkts_to_simulate_str);
      end
   catch
      set(curr_obj,'String', state.NumofPkt);
      errordlg('Packets to simulate value not a number','Invalid input', 'modal');
   end
   
case '1Tx'
    oneTx = get(findobj('Tag', '1Tx'),'Value');
    if oneTx==1
        twoTx=findobj('Tag', '2Tx');
        threeTx=findobj('Tag', '3Tx');
        fourTx=findobj('Tag', '4Tx');
        set(twoTx,'Value',0);
        set(threeTx,'Value',0);
        set(fourTx,'Value',0);
    end
case '2Tx'
    twoTx = get(findobj('Tag', '2Tx'),'Value');
    if twoTx==1
        oneTx=findobj('Tag', '1Tx');
        threeTx=findobj('Tag', '3Tx');
        fourTx=findobj('Tag', '4Tx');
        set(oneTx,'Value',0);
        set(threeTx,'Value',0);
        set(fourTx,'Value',0);
    end
case '3Tx'
    threeTx = get(findobj('Tag', '3Tx'),'Value');
    if threeTx==1
        twoTx=findobj('Tag', '2Tx');
        oneTx=findobj('Tag', '1Tx');
        fourTx=findobj('Tag', '4Tx');
        set(twoTx,'Value',0);
        set(oneTx,'Value',0);
        set(fourTx,'Value',0);
    end
case '4Tx'
    fourTx = get(findobj('Tag', '4Tx'),'Value');
    if fourTx==1
        twoTx=findobj('Tag', '2Tx');
        threeTx=findobj('Tag', '3Tx');
        oneTx=findobj('Tag', '1Tx');
        set(twoTx,'Value',0);
        set(threeTx,'Value',0);
        set(oneTx,'Value',0);
    end

    case '1Rx'
    oneRx = get(findobj('Tag', '1Rx'),'Value');
    if oneRx==1
        twoRx=findobj('Tag', '2Rx');
        threeRx=findobj('Tag', '3Rx');
        fourRx=findobj('Tag', '4Rx');
        set(twoRx,'Value',0);
        set(threeRx,'Value',0);
        set(fourRx,'Value',0);
    end
case '2Rx'
    twoRx = get(findobj('Tag', '2Rx'),'Value');
    if twoRx==1
        oneRx=findobj('Tag', '1Rx');
        threeRx=findobj('Tag', '3Rx');
        fourRx=findobj('Tag', '4Rx');
        set(oneRx,'Value',0);
        set(threeRx,'Value',0);
        set(fourRx,'Value',0);
    end
case '3Rx'
    threeRx = get(findobj('Tag', '3Rx'),'Value');
    if threeRx==1
        twoRx=findobj('Tag', '2Rx');
        oneRx=findobj('Tag', '1Rx');
        fourRx=findobj('Tag', '4Rx');
        set(twoRx,'Value',0);
        set(oneRx,'Value',0);
        set(fourRx,'Value',0);
    end
case '4Rx'
    fourRx = get(findobj('Tag', '4Rx'),'Value');
    if fourRx==1
        twoRx=findobj('Tag', '2Rx');
        threeRx=findobj('Tag', '3Rx');
        oneRx=findobj('Tag', '1Rx');
        set(twoRx,'Value',0);
        set(threeRx,'Value',0);
        set(oneRx,'Value',0);
    end

case 'AWGN    '
    awgn = get(findobj('Tag', 'AWGN    '),'Value');
    if awgn==1
        rayleigh=findobj('Tag', 'Rayleigh');
        set(rayleigh,'Value',0);
    end
case 'Rayleigh'
    rayleigh = get(findobj('Tag', 'Rayleigh'),'Value');
    if rayleigh==1
        awgn=findobj('Tag', 'AWGN    ');
        set(awgn,'Value',0);
    end
    
case 'Channel_Est'
    ch_est = get(findobj('Tag', 'Channel_Est'),'Value');
    if ch_est==1
        oneRx=findobj('Tag', '1Rx');
        set(oneRx,'Value',0);
        twoRx=findobj('Tag', '2Rx');
        set(twoRx,'Value',1);
        threeRx=findobj('Tag', '3Rx');
        set(threeRx,'Value',0);
        fourRx=findobj('Tag', '4Rx');
        set(fourRx,'Value',0);
    end
    if ch_est==1
        oneTx=findobj('Tag', '1Tx');
        set(oneTx,'Value',0);
        twoTx=findobj('Tag', '2Tx');
        set(twoTx,'Value',1);
        threeTx=findobj('Tag', '3Tx');
        set(threeTx,'Value',0);
        fourTx=findobj('Tag', '4Tx');
        set(fourTx,'Value',0);
    end

case 'Rx_corr'
    rx_corr = get(findobj('Tag', 'Rx_corr'),'Value');
    if rx_corr==1
        oneRx=findobj('Tag', '1Rx');
        set(oneRx,'Value',0);
        twoRx=findobj('Tag', '2Rx');
        set(twoRx,'Value',1);
        threeRx=findobj('Tag', '3Rx');
        set(threeRx,'Value',0);
        fourRx=findobj('Tag', '4Rx');
        set(fourRx,'Value',0);
    end
    if rx_corr==1
        oneTx=findobj('Tag', '1Tx');
        set(oneTx,'Value',0);
        twoTx=findobj('Tag', '2Tx');
        set(twoTx,'Value',1);
        threeTx=findobj('Tag', '3Tx');
        set(threeTx,'Value',0);
        fourTx=findobj('Tag', '4Tx');
        set(fourTx,'Value',0);
    end
    
case 'corr_value'
    corr_val_str=str2double(get(curr_obj,'String'));
    
otherwise
   
end