📄 conven.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 + -