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

📄 ctcencoder.m

📁 传统的卷积码和Turbo码直到今天仍有广泛的应用
💻 M
字号:
function CtcCode=CtcEncoder(data,index)%编码器第二次编码初始状态查找表,第一维:8种终止状态,第二维:编码器的三个寄存器的初始值,第三维:码块长度leng/2再模7的值LookUpTable=zeros(8,3,6);LookUpTable(:,:,1)=[0 0 0;1 1 0;1 0 0;0 1 0;1 1 1;0 0 1;0 1 1;1 0 1];LookUpTable(:,:,2)=[0 0 0;0 1 1;1 1 1;1 0 0;1 0 1;1 1 0;0 1 0;0 0 1];LookUpTable(:,:,3)=[0 0 0;1 0 1;0 1 1;1 1 0;0 1 0;1 1 1;0 0 1;1 0 0];LookUpTable(:,:,4)=[0 0 0;1 0 0;0 0 1;1 0 1;1 1 0;0 1 0;1 1 1;0 1 1];LookUpTable(:,:,5)=[0 0 0;0 1 0;1 0 1;1 1 1;0 0 1;0 1 1;1 0 0;1 1 0];LookUpTable(:,:,6)=[0 0 0;1 1 1;1 1 0;0 0 1;0 1 1;1 0 0;1 0 1;0 1 0];leng=length(data);%CtcCode存放编码结果if index==1|index==4    CtcCode=zeros(1,leng*2);elseif index==2|index==6    CtcCode=zeros(1,leng*3/2);else    CtcCode=zeros(1,leng*4/3);endCtcCode(1:leng)=data(:);%交织alpha=CtcInterleaver(data);CtcInterleaved=data(alpha);%第一次编码InitialState=[0 0 0];[code1,FinalState]=ctcenc(data,InitialState);%计算终止状态值count=FinalState(1)*4+FinalState(2)*2+FinalState(3);%查表得第二次编码的初始状态值FinalState=LookUpTable(count+1,:,mod(leng/2,7));% FinalState%第二次编码[code1,FinalState]=ctcenc(data,FinalState);%交织序列第一次编码[code2,FinalState]=ctcenc(CtcInterleaved,InitialState);count=FinalState(1)*4+FinalState(2)*2+FinalState(3);FinalState=LookUpTable(count+1,:,mod(leng/2,7));% FinalState%交织序列第二次编码[code2,FinalState]=ctcenc(CtcInterleaved,FinalState);%puncturingif index==1|index==4    CtcCode(leng+1:leng+leng/2)=code1(:);    CtcCode(leng+leng/2+1:end)=code2(:);elseif index==2|index==6    %r=2/3    CtcCode(leng+1:leng+leng/4)=code1(1:2:end);    CtcCode(leng+leng/4+1:end)=code2(1:2:end);else    %r=3/4    CtcCode(leng+1:leng+leng/6)=code1(1:3:end);    CtcCode(leng+leng/6+1:end)=code2(1:3:end);end

⌨️ 快捷键说明

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