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

📄 viterbidecoder.m

📁 卷积码的Viterbi译码算法仿真程序 要求:递归卷积码
💻 M
字号:
function  [LLR,dec_outbits ] =ViterbiDecoder(Pn,rx_bits)%Viterbi译码器,递归卷积码global  state_num;global  memory_len;global  state_inbits;global  state_outbits1;global  state_outbits2;global alpha;%状态度量global gama; %幸存路径L=length(rx_bits);LLR=zeros(1,L-memory_len);dec_outbits=zeros(1,L-memory_len);alpha=zeros(L+1,state_num);gama=zeros(L,state_num,state_num);%初始化alpha和betaalpha(1,1) =1;%计算alpha值for k=2:L+1    for s2=0:state_num-1;        metric=zeros(1,2);        state=zeros(1,2);        index=0;        for s1=0:state_num-1                if alpha(k-1,s1+1)==0                    continue;                    end                if state_inbits(s1+1,s2+1)~=0                     index=index+1;                    metric(index)=rx_bits(k-1,1)*state_outbits1(s1+1,s2+1)+rx_bits(k-1,2)*state_outbits2(s1+1,s2+1)+alpha(k-1,s1+1);                    %metric(index)=(rx_bits(k-1,1)-state_outbits1(s1+1,s2+1))^2+(rx_bits(k-1,2)-state_outbits2(s1+1,s2+1))^2;                    state(index)=s1;                end        end        if index~=0            [ma,index]=max(metric);            alpha(k,s2+1)=ma;            gama(k-1,state(index)+1,s2+1)=1;        end    endend%计算LLRs2=0;for k=L:-1:1    for s1=0:state_num-1        if gama(k,s1+1,s2+1)==1            if k<=L-memory_len                dec_outbits(k)=(state_inbits(s1+1,s2+1)+1)/2;                LLR(k)=alpha(k+1,s2+1)-alpha(k,s1+1);%计算软输出            end            s2=s1;%更新状态            break;        end    endend

⌨️ 快捷键说明

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