?? rsc1decoder.m
字號:
function [Lex, llrpOut]=RSC1decoder(FrameL,wnum,wl,Lsys,Lpari,LexIn)
% FrameL=4096;
% wnum=64;
% wl=64;
%
% Lsys=zeros(1,FrameL);
% Lpari=zeros(1,FrameL);
% LexIn=zeros(1,FrameL);
%
% fid = fopen('E:/turbo/mfile/float_window/decoder_source_Lsysns.txt','r');
% Lsys=fscanf(fid,'%d\n ');
% fclose(fid);
%
% fid = fopen('E:/turbo/mfile/float_window/decoder_Lpari1ns.txt','r');
% Lpari=fscanf(fid,'%d\n ');
% fclose(fid);
Gs=zeros(1,FrameL);
Gp=zeros(1,FrameL);
G0=zeros(1,FrameL);
G1=zeros(1,FrameL);
Gadd=zeros(1,FrameL);
Gsub=zeros(1,FrameL);
Gadd_A=zeros(1,FrameL);
Gsub_A=zeros(1,FrameL);
Gadd_B1=zeros(1,FrameL);
Gsub_B1=zeros(1,FrameL);
Gadd_B2=zeros(1,FrameL);
Gsub_B2=zeros(1,FrameL);
for i=1:FrameL
Gs(i)=Lsys(i)+LexIn(i);
Gp(i)=Lpari(i);
G0(i)=Gs(i)/2;
G1(i)=Gp(i)/2;
Gadd(i)=G0(i)+G1(i);
Gsub(i)=G0(i)-G1(i);
end
addrrA=gen_Aaddrr(FrameL);
addrrB1=gen_B1addrr(FrameL);
addrrB2=gen_B2addrr(FrameL);
for i=1:FrameL
Gadd_A(i)=Gadd(addrrA(i));
Gadd_B1(i)=Gadd(addrrB1(i));
Gadd_B2(i)=Gadd(addrrB2(i));
Gsub_A(i)=Gsub(addrrA(i));
Gsub_B1(i)=Gsub(addrrB1(i));
Gsub_B2(i)=Gsub(addrrB2(i));
end
A_metric=gen_A_metric(wnum,wl,Gadd_A,Gsub_A);
% fid = fopen('E:/turbo/mfile/float_window/A_metric.txt','w');
% fprintf(fid,'%f\n ',A_metric);
% fclose(fid);
B1_metric=gen_B1_metric(wnum,wl,Gadd_B1,Gsub_B1);
% fid = fopen('E:/turbo/mfile/float_window/B1_metric.txt','w');
% fprintf(fid,'%f\n ',B1_metric);
% fclose(fid);
B2_metric=gen_B2_metric(wnum,wl,Gadd_B2,Gsub_B2);
% fid = fopen('E:/turbo/mfile/float_window/B2_metric.txt','w');
% fprintf(fid,'%f\n ',B2_metric);
% fclose(fid);
%combine B1 and B2
B_metric=zeros(4,FrameL);
for i=1:wnum
for j=1:wl
if(mod(i,2))
B_metric(1,(i-1)*wl+j)=B1_metric(1,(i-1)*wl+129-j);
B_metric(2,(i-1)*wl+j)=B1_metric(2,(i-1)*wl+129-j);
B_metric(3,(i-1)*wl+j)=B1_metric(3,(i-1)*wl+129-j);
B_metric(4,(i-1)*wl+j)=B1_metric(4,(i-1)*wl+129-j);
else
B_metric(1,(i-1)*wl+j)=B2_metric(1,(i-2)*wl+129-j);
B_metric(2,(i-1)*wl+j)=B2_metric(2,(i-2)*wl+129-j);
B_metric(3,(i-1)*wl+j)=B2_metric(3,(i-2)*wl+129-j);
B_metric(4,(i-1)*wl+j)=B2_metric(4,(i-2)*wl+129-j);
end
end
end
for j=1:64
B_metric(1,(64-1)*wl+j)=B2_metric(1,(64-2)*wl+65-j);
B_metric(2,(64-1)*wl+j)=B2_metric(2,(64-2)*wl+65-j);
B_metric(3,(64-1)*wl+j)=B2_metric(3,(64-2)*wl+65-j);
B_metric(4,(64-1)*wl+j)=B2_metric(4,(64-2)*wl+65-j);
end
% fid = fopen('E:/turbo/mfile/float_window/B_metric.txt','w');
% fprintf(fid,'%f\n ',B_metric);
% fclose(fid);
%comput Le
Lex=zeros(1,FrameL);
Lex=LeOut(A_metric,B_metric,Gp,FrameL);
llrsOut=zeros(1,FrameL);
for i=1:FrameL
llrsOut(i)=Lex(i)+Gs(i);
if((llrsOut(i)<=31)&(llrsOut(i)>=-32))
llrsOut(i)=llrsOut(i);
elseif(llrsOut(i)>=32)
llrsOut(i)=31;
else
llrsOut(i)=-32;
end
end
LepOut=zeros(1,FrameL);
LepOut=Lep(A_metric,B_metric,Gs,FrameL);
llrpOut=zeros(1,FrameL);
for i=1:FrameL
llrpOut(i)=LepOut(i)+Gp(i);
end
for i=FrameL-1:FrameL
llrpOut(i)=llrsOut(i-2);
end
% fid = fopen('E:/turbo/mfile/float_window/le1_onestage1.txt','w');
% fprintf(fid,'%f\n ',Lex);
% fclose(fid);
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -