www.pudn.com > space-timecodingBrankaVuceticJinhongYuan.rar > STTC.m, change:2007-01-01,size:1615b


function [SNR,FER]=STTC(option) 
fr_length=130; 
NumberofPackets=500; 
channel_model='Rayleigh'; 
Tx_antennas=2; 
Rx_antennas=2; 
corr_value=0; 
Rx_corr=0; 
%append zeros to the data to reset this trellis to zero 
zf=3; %length of zero appendix.  
 
%prepare look-up table 
[dlt,slt,md] = ltable(option,Rx_antennas); 
%md -> number of constellation points. BITS define the number of coded bits 
if md==4 %4PSK 
    BITS=2; 
elseif md==8%8PSK 
    BITS=3; 
elseif md==16%16QAM 
    BITS=4; 
end 
Channel_Est=0; 
add_est=0; 
%SNR variation in dBs 
SNR=0:2:20; 
h=waitbar(0,'Percentage Completed'); 
set(h,'Position',[230 50 275.25 56.25]); 
set(h,'name','Please wait...'); 
wb=9.09; 
%commence loop  
for i=1:length(SNR) 
    	source_data = generate_data(fr_length,NumberofPackets,md,zf); 
	 
        encoded_data = trellis_encoder(source_data,dlt,slt); 
	 
    	mod_sig = modul(encoded_data,md,Channel_Est); 
 
	 
	    [signal,ch_coefs] = channel(mod_sig,add_est,channel_model,SNR(i),Rx_antennas); 
 
 
        if Channel_Est==1 
            [est_coefs,signal]=est(signal,ch_coefs,NumberofPackets,Rx_antennas); 
            ch_coefs=est_coefs; 
        end     
        if Rx_corr==1 
        	signal=correlate(signal,corr_value,NumberofPackets); 
        end 
     
        [data_est,state_est] = detect(signal,dlt,slt,ch_coefs); 
 
 
 
% counting the errors 
    	[FER_i,SER_i] = count(source_data,data_est); 
	 
    	SER(i) = SER_i; 
        BER(i)=SER(i)/BITS; 
        FER(i) = FER_i; 
        str_bar=[num2str(wb) '% Completed']; 
        waitbar(wb/100,h,str_bar); 
        wb=wb+9.09; 
    end 
close(h);