?? 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 + -