sttc.m

来自「Branka Vucetic,Jinhong Yuan著的空时编码技术一书的源程」· M 代码 · 共 66 行

M
66
字号
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);

⌨️ 快捷键说明

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