📄 cp0201_convlenc.m
字号:
%Convolutional Encoder ; input=1 bit -> output=2 bits with 3 memory elements, Code Rate=1/2
function [encoded_sequence]=cp0201_convlenc(message)
%TEST MESSAGES
%message=[1 0 1 0 1 1 1 0 0 0 1 1 0 1 1 0 0];%prb 0-1
% message=[0 0 1 0 1 0 1 0 1 0 0 1 1 0 1 0 0];
% message=[1 1 1 0 1 0 1 1 0 1 0 0 1 0 1 0 0];%prb 0-1
% message=[0 0 0 0 1 0 0 1 0 1 0 1 0 1 0 0 0];
% message=[1 0 1 0 1 0 1 0 0 1 0 1 0 1 1 0 0];%prb 0-1
% message=[0 1 1 0 1 0 1 0 1 1 1 1 0 0 1 0 0];
% message=[1 0 1 1 1 0 0 0 1 0 1 0 1 0 0 0 0];%prb 0-1
% message=[0 1 0 1 0 0 1 1 0 1 1 0 0 1 1 0 0];
% message=[1 0 1 1 0 1 0 1 0 0 1 1 0 1 0 0 0];%prb 0-1
% message=[1 0 1 1 0 1 0 1 0 0 1 0 1 1 0 0 0];%prb 0-1
% message=[0 0 1 0 0 1 1 1 0 0 1 0 1 0 1 0 0];
% message=[1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 0];%prb 0-1
% message=[1 0 1 1 0 0 1 1 0 0 1 1 0 0 1 0 0];%prb 0-1
% message=[0 1 1 1 0 0 1 1 0 0 1 1 0 0 1 0 0];
% message=[1 0 0 0 0 0 1 1 1 0 1 1 1 1 1 0 0];%prb 0-1
numbits=1024;
[bits]=cp0201_bits(numbits);
message=bits;
enco_mem=[0 0 0 0 0 0 0]; %# of memory elements=3
encoded_sequence=zeros(1,(length(message))*3);
enco_mem(1,7)=enco_mem(1,6);
enco_mem(1,6)=enco_mem(1,5);
enco_mem(1,5)=enco_mem(1,4);
enco_mem(1,4)=enco_mem(1,3);
enco_mem(1,3)=enco_mem(1,2);
enco_mem(1,2)=enco_mem(1,1);
enco_mem(1,1)=message(1,1);
temp=xor(enco_mem(1),enco_mem(3));
temp1=xor(temp,enco_mem(4));
temp2=xor(temp1,enco_mem(6));
o1=xor(temp,enco_mem(7));%generator polynomial=1011011
temp3=xor(enco_mem(1),enco_mem(2));
temp4=xor(temp3,enco_mem(3));
temp5=xor(temp4,enco_mem(5));
o2=xor(temp5,enco_mem(7)); %generator polynomial=1110101
temp6=xor(temp4,enco_mem(4));
o3=xor(temp6,enco_mem(7)); %generator polynomial=1111001
encoded_sequence(1,1)=o1;
encoded_sequence(1,2)=o2;
encoded_sequence(1,3)=o3;
msg_len=length(message);
c=4;
for i=2:msg_len
enco_mem(1,7)=enco_mem(1,6);
enco_mem(1,6)=enco_mem(1,5);
enco_mem(1,5)=enco_mem(1,4);
enco_mem(1,4)=enco_mem(1,3);
enco_mem(1,3)=enco_mem(1,2);
enco_mem(1,2)=enco_mem(1,1);
if(i<=msg_len)
enco_mem(1,1)=message(1,i);
else
enco_mem(1,1)=0;
end
temp=xor(enco_mem(1),enco_mem(3));
temp1=xor(temp,enco_mem(4));
temp2=xor(temp1,enco_mem(6));
o1=xor(temp,enco_mem(7));%generator polynomial=1011011
temp3=xor(enco_mem(1),enco_mem(2));
temp4=xor(temp3,enco_mem(3));
temp5=xor(temp4,enco_mem(5));
o2=xor(temp5,enco_mem(7)); %generator polynomial=1110101
temp6=xor(temp4,enco_mem(4));
o3=xor(temp6,enco_mem(7));
encoded_sequence(1,c)=o1; %o1 generating polynomial(1011011)
c=c+1;
encoded_sequence(1,c)=o2; %o2 generating polynomial(1110101)
c=c+1;
encoded_sequence(1,c)=o2; %o2 generating polynomial(1111001)
c=c+1;
end
stem(encoded_sequence);
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -