?? butongneima.m
字號:
N=20;
frame_no=104;
rs_N=15;
rs_k=13;
Nrows=12;
Ncols=10;
tblen=34;
EbNo=-5:15;
M=2;
modobj=modem.pskmod('M', 2, 'PhaseOffset', 0, 'SymbolOrder',...
'binary', 'InputType', 'bit');
demodobj= modem.pskdemod('M', 2, 'PhaseOffset', 0, ...
'SymbolOrder', 'binary', 'OutputType', 'bit', ...
'DecisionType', 'hard decision');
for n=1:length(EbNo)
coderate=0.5*223/255;
% Ebn0=2;
trel=poly2trellis(3, [7 5]);
SNR(n) = EbNo(n) -10*log10(1/coderate);
error_no=0;
% error_no_conv=0;
for i=1:N
% i
raw_data=randint(1,frame_no,2);
t1=reshape(raw_data,8,13);
t2=bi2de(t1','left-msb');
msg = gf(t2,8);
t3=rsenc(msg',rs_N,rs_k);
t4=de2bi(double(t3.x),8,'left-msb');
t4=reshape(t4',120,1);
intrlved= matintrlv(t4,Nrows,Ncols);
% trel=poly2trellis(7, [133 171]);
t5=convenc(intrlved,trel);
a0=modulate(modobj,t5);
a0=pskmod(t5,2);
% a1=filter(chan,a0);
a2=awgn(a0,SNR(n));
set(demodobj,'OutputType','bit','DecisionType', 'Approximate LLR', 'NoiseVariance', 10^(-SNR(n)/10));
a3=demodulate(demodobj,a2);
%
decoded3 = vitdec(a3, trel, tblen, 'trunc', 'unquant');
deintrlved= matdeintrlv(decoded3,Nrows,Ncols);
t9=reshape(deintrlved,8,15);
tt=bi2de(t9','left-msb');
msg1 = gf(tt,8);
[dec,cnumerr] = rsdec(msg1',rs_N,rs_k);
% t10=t2'-double(dec.x);
dec_data=de2bi((double(dec.x))',8,'left-msb');
dec_data1=reshape(dec_data',104,1);
[t12,t13]=biterr(dec_data1,raw_data');
[t14,t15]=biterr(decoded3,intrlved);
error_no=error_no+t13;
% error_no_conv=error_no_conv+t15;
end
ber_cont1(n)=error_no/N;
trel=poly2trellis(2, [3 2]);
SNR(n) = EbNo(n) -10*log10(1/coderate);
error_no=0;
for i=1:N
raw_data=randint(1,frame_no,2);
t1=reshape(raw_data,8,13);
t2=bi2de(t1','left-msb');
msg = gf(t2,8);
t3=rsenc(msg',rs_N,rs_k);
t4=de2bi(double(t3.x),8,'left-msb');
t4=reshape(t4',120,1);
intrlved= matintrlv(t4,Nrows,Ncols);
% trel=poly2trellis(7, [133 171]);
t5=convenc(intrlved,trel);
a0=modulate(modobj,t5);
a0=pskmod(t5,2);
% a1=filter(chan,a0);
a2=awgn(a0,SNR(n));
set(demodobj,'OutputType','bit','DecisionType', 'Approximate LLR', 'NoiseVariance', 10^(-SNR(n)/10));
a3=demodulate(demodobj,a2);
%
decoded3 = vitdec(a3, trel, tblen, 'trunc', 'unquant');
deintrlved= matdeintrlv(decoded3,Nrows,Ncols);
t9=reshape(deintrlved,8,15);
tt=bi2de(t9','left-msb');
msg1 = gf(tt,8);
[dec,cnumerr] = rsdec(msg1',rs_N,rs_k);
% t10=t2'-double(dec.x);
dec_data=de2bi((double(dec.x))',8,'left-msb');
dec_data1=reshape(dec_data',104,1);
[t12,t13]=biterr(dec_data1,raw_data');
[t14,t15]=biterr(decoded3,intrlved);
error_no=error_no+t13;
% error_no_conv=error_no_conv+t15;
end
ber_cont2(n)=error_no/N;
end
semilogy(EbNo,ber_cont1,'-*',EbNo,ber_cont2,'-+')
grid on;
marker = legend('(7,5)卷積碼','(3,2)卷積碼',3);
set(marker,'Interpreter','none');
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -