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

📄 conven.m

📁 关于短波通信中多径的Matlab仿真代码
💻 M
字号:
%TE-信道编码
%copyright:flyingxiang
function out=conven(K,g1,g2,inp)
%进行卷积码编码
clear out;
clear input;
n=2;                                           %延迟数量
[trellis]=trelica0(K,g1,g2);                   %注意这里生成的网格图所对应的g1和g2正好颠倒,所以一对二的输出应该也互调
size=K-1;                                      %最后加零以保证最后以第一个状态结束的数量
input=[inp zeros(1,size)]  ;                   %加零后的输入
out=zeros(1,n*length(input));

if input(1)==0                                 %当输入为零时
   aux=fliplr(de2bi(trellis.out(1,1)));        %这里与上面对应,颠倒了其输出
   
   if isempty(aux)==1                          %是否为空
      aux=[0 0];
   end
   if length(aux)<n                           % aux=1  aux=[1]=[0 1]
      aux=[zeros(1,2-length(aux)) aux];
   end
   
   stat=trellis.state(1,1);                    %取相应的状态
elseif input(1)==1
   aux=fliplr(de2bi(trellis.out(1,2)));        %这里与上面对应,颠倒了其输出
   
   if isempty(aux)==1                          %当输入为一时
      aux=[0 0];
   end
   if length(aux)<n
      aux=[zeros(1,2-length(aux)) aux];
   end
   
   stat=trellis.state(1,2);
end
out=[aux];



for i=2:length(input)                                  %编码开始
   if input(i)==0
      aux=fliplr(de2bi(trellis.out(stat+1,1)));
      
      if isempty(aux)==1
         aux=[0 0];
      end
      if length(aux)<n
         aux=[zeros(1,2-length(aux)) aux];
      end
      
      stat=trellis.state(stat+1,1);
      
   elseif input(i)==1
      aux=fliplr(de2bi(trellis.out(stat+1,2)));
      
      if isempty(aux)==1
         aux=[0 0];
      end
      if length(aux)<n
         aux=[zeros(1,2-length(aux)) aux];
      end
      
      stat=trellis.state(stat+1,2);
   end
   
   out=[out aux];                                      %连接生成最后的输出
end







⌨️ 快捷键说明

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