⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 rsc1decoder.m

📁 该文件夹中的SC_TurboIC_MIMO_0524.m是将我turbo的编译码模块替换原来B3G系统中的turbo编译码模块而重新得到的. 定点仿真得,在比特信噪比>=0.5db时,经过一次
💻 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 + -