?? itera_decode_slowfading.m
字號:
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 + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -