该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
clear all
close all
snr_in_dB=-4:2:8;
SNR_in_DB=-4:0.1:8;
for i=1:length(SNR_in_DB)
SNR=10^(SNR_in_DB(i)/10);
t_e_r(i)=Qfunct(sqrt(2*SNR));
end;
for i=1:length(snr_in_dB),
[class1_BER,class2_BER]=tchfsPe_AWGN(snr_in_dB(i));
end;
semilogy(snr_in_dB,class1_BER,'b-',snr_in_dB,class2_BER,'r*-');
title('高斯噪声下TCH/FS信道误码特性');
grid on;
xlabel('信噪比 Eb/No(dB)');
ylabel('误码率 Pe');
legend('class1','class2');
function[class1_BER,class2_BER]=tchfsPe_AWGN(snr_in_dB)
%snr_in_dB=2;
%噪声功率
E=1;
snr=10^(snr_in_dB/10);
sgma=sqrt((E/snr)/2);
%帧个数
frameNum=100;
s=[];
%突发间隔
N_Interval=80;
%突发长度
N_Length=5;
for i=1:frameNum
signal=randint(1,260);
%外编码
exEncode=T_FS_EX_EN(signal(1:182));
%内编码
inEncode=GSMconv_EN(exEncode);
%交织前合成
C((i-1)*456+1:i*456) = [inEncode signal(183:260)];
s=[s signal];
end
%交织
u=INTER_WEAVE_8(C);
%BPSK调制
u=2*u-1;
%经信道加高斯燥声
r=u+sgma*randn(size(u));
%BPSK解调
ru=sign(r+eps);
ru=(ru+1)/2;
%加突发噪声
Noise=BurstNoise(N_Interval,N_Length,length(ru));
ru=mod(ru+Noise,2);
%%%%%%%%%%%%%%%%%%%%%
%反交织
D=COUNTER_WEAVE_8(ru);
class1_err_num=0;
class2_err_num=0;
class1_block_err=0;
%解码
for i=1:frameNum
%分离帧
inDesig=D((i-1)*456+1:i*456);
class2bit=inDesig(379:456);
inDecode=inDesig(1:378);
%内编码解码
exDecode=GSMconv_DE(inDecode);
%外编码解码
[class1bit,flag]=T_FS_EX_DE(exDecode);
%错误统计
class1_err_num = class1_err_num
length(find(class1bit-s((i-1)*260+1:(i-1)*260+182)));
class2_err_num = class2_err_num
length(find(class2bit-s((i-1)*260+183:(i-1)*260+260)));
class1_block_err=class1_block_err+flag;
end;
class1_BER=class1_err_num/(frameNum*182);
class1_BLER=class1_Block_err/frameNum;
class2_BER=class2_err_num/(frameNum*78);
function code=GSMconv_EN(msg)
TCH_FS_constraintlength=5;%约束矩阵
TCH_FS_Generator=[23 33];
trellis=poly2trellis(TCH_FS_constraintlength, TCH_FS_Generator);%生成网格
REG_Num=log2(trellis.numStates);
[code1,fstate1]=convenc(msg,trellis);
[code2,fstate2]=convenc(zeros(REG_Num,1),trellis,fstate1);%结尾比特
code=[code1 ;code2];
Error using vertcat
Dimensions of matrices being concatenated are not consistent.
Error in GSMconv_EN (line 8)
code=[code1 ;code2];
Error in tchfsPe_AWGN (line 19)
inEncode=GSMconv_EN(exEncode);