📄 sttc.m
字号:
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 + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -