convolencoder.m

来自「数字电视的交织和解交织算法」· M 代码 · 共 46 行

M
46
字号
% function seqcoder = QPSKcoder()
%--------------------------------------------------------------------------------------------------------------%%%
%--------------------------------------------------------------------------------------------------------------%%%
clc;
clear;
clear all;
LLL=255;%交织长度。
errorLEN=10;
%--------------------------------------------------------------------------
rand('state',10);
msg0         = round(rand(1,255));                        %生成输入bit序列。
%--------------------------------------------------------------------------
%YesorNo=fopen('f:\原始随机数据\noise.src','r');        %该段用于生成湖试数据。
%if YesorNo<0
    %error('不能打开原始数据文件');
%else
    %msg00=fread(YesorNo,'uint8');
    %fclose(YesorNo);
%end
%msg0=seq2bit(msg00,8)';
%--------------------------------------------------------------------------
len_msg0     = length(msg0);
i            = fix(len_msg0/LLL);
if i*LLL<len_msg0                                          
   for t=len_msg0+1:(i+1)*LLL
       msg0(t)=0;
   end
   i=i+1;
end 
%--------------------------------------------------------------------------
for j=1:i     %把输入bit序列变成若干个行向量。
    msg(j,:) = msg0(LLL*(j-1)+1:LLL*j);
end 
save bitseq msg;
rand('state',sum(100*clock));
for k=1:i            
    V(k,:) = conv(msg(k,:),LLL);    %生成递归系统卷积码(Vt,0  Vt,2)。每一次调用convenc()卷积码都是从全零状态开始的。
    V(k,:) = Interleave(V(k,:),LLL);%外交织。
    B=round(rand(1,errorLEN)*(2*LLL-1))+1;
    for t=1:errorLEN
        V(k,B(t))=xor(V(k,B(t)),1);
    end
end 
save ConvolCoded V;
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
disp([blanks(10),'编码结束!']);

⌨️ 快捷键说明

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