itera_decode_slowfading.m

来自「短波信道抗多音干扰的性能分析及其仿真」· M 代码 · 共 66 行

M
66
字号
function pb=itera_decode_slowfading(rho_in_dB,itera,dfhtrel,trel,K,formerstate1)

% information source
rho=10^(rho_in_dB/10);
sgma=sqrt(1/(2*rho));
len=1000;
source=[randint(1,len-K),zeros(1,K)];

% outer encoder 
code1=zeros(1,2*len);
code1=convenc(source,trel,[]);

% interleave the output of the outer encoder
inte_in=zeros(1,len);
inte_out=zeros(1,len); 
for i=1:len
    inte_in(i)=change2deci(code1(1,2*i-1:2*i),2);
end
posit=zeros(size(inte_out));
[inte_out,posit]=interleave(inte_in);

% generate transmitted frequency sequence 
nextstate=dfhtrel.nextstates;
formerstate=dfhtrel.formerstates;
fanout=dfhtrel.numinput;
number_of_out=dfhtrel.numoutput;
number_of_states=dfhtrel.numstates;
output=dfhtrel.outputs;
f=zeros(1,len);
demod_input=zeros(number_of_out,len);
P=0;
for j=1:len
    f(j)=output(P+1,inte_out(j)+1);
    for k=0:number_of_out-1
        if(k~=f(j))
            rc=sgma*randn;
            rs=sgma*randn;
        else
            rc=raylrnd(1/sqrt(2))+sgma*randn;
            rs=sgma*randn;
        end
        demod_input(k+1,j)=rc^2+rs^2;
    end
    P=nextstate(P+1,inte_out(j)+1);
end
%demod_input=demod_input./sgma^2;
sgma21=2*sgma^2*(1+rho);
sgma22=2*sgma^2;

num_of_err=0;
extrin=zeros(fanout-1,len);
for j=0:itera-1
    inner_output=inner_decode(demod_input,extrin,nextstate,formerstate,fanout,number_of_states,output,sgma21,sgma22);
    outer_input=deinterleave(inner_output,posit);
    outer_out_c=outer_decode_c(outer_input,trel,formerstate1);
    extrin=interleave1(outer_out_c,posit);
end
inner_output=inner_decode(demod_input,extrin,nextstate,formerstate,fanout,number_of_states,output,sgma21,sgma22);
outer_input=deinterleave(inner_output,posit);
outer_out_u=outer_decode_u(outer_input,trel,formerstate1);
for j=1:len
    if(source(j)~=outer_out_u(j))
        num_of_err=num_of_err+1;
    end
end
pb=num_of_err/len;    

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?