www.gusucode.com > MIMO_OFDM系统的matlab仿真程序以及GUI界面的实现源码程序 > CH9/input_options.m
function SimulationParameters = input_options % number of FFT points fftsixtyfour = get(findobj('Tag', 'FFTsixtyfour'),'Value'); if fftsixtyfour==1 FFTPoints=64; end fftonetwoeight = get(findobj('Tag', 'FFTonetwoeight'),'Value'); if fftonetwoeight==1 FFTPoints=128; end ffttwofivesix = get(findobj('Tag', 'FFTtwofivesix'),'Value'); if ffttwofivesix==1 FFTPoints=256; end fftfiveonetwo = get(findobj('Tag', 'FFTfiveonetwo'),'Value'); if fftfiveonetwo==1 FFTPoints=512; end % convolutional code options conv_code_rate = get(findobj('Tag', 'ConvCodeRate'),'String'); conv_code_rate = conv_code_rate(get(findobj('Tag', 'ConvCodeRate'),'Value'),:); %zero padding zeropad=get(findobj('Tag', 'ZeroPad'),'Value'); % data carriers option DataCarriers = eval(get(findobj('Tag', 'DataCarriers'),'String')); if zeropad~=1 DataCarriers=FFTPoints; end if DataCarriers>FFTPoints uiwait(errordlg('Number of data carriers exceeds FFT size.','Invalid Input','Modal')); end % Interleaving InterleavingBits = get(findobj('Tag', 'InterleavingBits'),'Value'); % ModulationType ModulationType = get(findobj('Tag', 'ModulationType'),'String'); ModulationType = ModulationType(get(findobj('Tag', 'ModulationType'),'Value'),:); %channel estimation (LSE) channel_estimation_lse = get(findobj('Tag', 'ChannelEstimation_LSE'),'Value'); %channel estimation (FFT) channel_estimation_fft = get(findobj('Tag', 'ChannelEstimation_FFT'),'Value'); % Tx Diversity options TwoTxAntennas= get(findobj('Tag', 'MIMO_TwoTxAntennas'),'Value'); if TwoTxAntennas==1 TransmitDiversity=2; end % Tx Diversity options FourTxAntennas= get(findobj('Tag', 'MIMO_FourTxAntennas'),'Value'); if FourTxAntennas==1 TransmitDiversity=4; end if TwoTxAntennas==0 & FourTxAntennas==0 TransmitDiversity=0; end % Rx Diversity TwoRxAntennas = get(findobj('Tag', 'MIMO_TwoRxAntennas'),'Value'); if TwoRxAntennas==1 ReceiveDiversity=2; end % Rx Diversity FourRxAntennas = get(findobj('Tag', 'MIMO_FourRxAntennas'),'Value'); if FourRxAntennas==1 ReceiveDiversity=4; end if TwoRxAntennas==0 & FourRxAntennas==0 ReceiveDiversity=0; end % Channel models if get(findobj('Tag', 'AWGN'),'Value') ChannelModel = 'AWGN'; elseif get(findobj('Tag', 'MaxDelaySpread'),'Value') ChannelModel = 'Rayleigh'; elseif get(findobj('Tag','Rician'),'Value') ChannelModel = 'Rician'; end TimeMaxDelay = eval(get(findobj('Tag', 'TimeMaxDelay'),'String')); kfactor=eval(get(findobj('Tag','kfactor'),'String')); %Packets per run options SimulationPackets = eval(get(findobj('Tag', 'SimulationPackets'),'String')); % No. of Tx. Antennas Tx. Antennas = eval(get(findobj('Tag', 'MIMO_Tx. Antennas'),'String')); % No. of Rx. Antennas Rx. Antennas = eval(get(findobj('Tag', 'MIMO_Rx. Antennas'),'String')); % OFDM-MIMO vblast = get(findobj('Tag', 'VBLAST'),'Value'); if vblast==1 TransmitDiversity=1; ReceiveDiversity=1; end %Save file savefile=get(findobj('Tag', 'Savefile'),'Value'); if savefile==1 uiwait(msgbox('Please enter the file name. The file will be saved in the current directory. Press "OK" to continue. Otherwise press "CNTL + C" to exit the program','File Path','modal')); end filename = get(findobj('Tag', 'FileName'),'String'); str1=filename; if isempty(str1) & savefile==1 uiwait(errordlg('Enter file name!! Press "CNTL + C" to exit the program.','Invalid Input','Modal')); end SimulationParameters = struct('FFTPoints', FFTPoints, ... 'ConvCodeRate', conv_code_rate, ... 'ZeroPad', zeropad, ... 'DataCarriers', DataCarriers, ... 'InterleavingBits', InterleavingBits, ... 'ModulationType', ModulationType,... 'TxDiv', TransmitDiversity, ... 'RxDiv', ReceiveDiversity, ... 'ChannelModel', ChannelModel, ... 'TimeMaxDelay', TimeMaxDelay, ... 'kfactor',kfactor, ... 'SNR', (0:2:30),... 'ChannelEstimation_LSE', channel_estimation_lse, ... 'ChannelEstimation_FFT', channel_estimation_fft, ... 'SimulationPackets', SimulationPackets,... 'M',Tx. Antennas,... 'N',Rx. Antennas,... 'VBLAST',vblast,... 'Savefile',savefile,... 'FileName',filename);