📄 vtb_decoding.m
字号:
function [state,decoding_x1]=vtb_decoding(symbol_per_frame, H, r, table);
S(1,:,:)=[-1,-1;1 1;];
S(2,:,:)=[-1,1;1 -1;];
h=abs(H(1,1))^2+abs(H(1,2))^2;
for i=1:2,
for m=1:2,
BX(i,m)=h-2*real(r(1,1)*conj(H(1,1)*S(table(1,i,1),m,1)*table(1,i,2))+r(1,2)*conj(H(1,2))*S(table(1,i,1),m,1)); % decoding x1
BY(i,m)=h-2*real(r(1,1)*conj(H(1,2)*S(table(1,i,1),m,2))-r(1,2)*conj(H(1,1))*S(table(1,i,1),m,2)*conj(table(1,i,2))); % decoding x2
end
path(i,:)=BX(i,:)+BY(i,:);
[y,x]=min(path(i,:));
state(1, i, :)=[1,x-1, y, i-1]; %[current state,decoding x1, path accumulation, decoding x2];
end;
for k=2:symbol_per_frame, % path matric calculation
for i=1:2,
for m=1:2,
BX(i,m)=h-2*real(r(k,1)*conj(H(1,1)*S(table(1,i,1),m,1)*table(1,i,2))+r(k,2)*conj(H(1,2))*S(table(1,i,1),m,1)); % decoding x1
BY(i,m)=h-2*real(r(k,1)*conj(H(1,2)*S(table(1,i,1),m,2))-r(k,2)*conj(H(1,1))*S(table(1,i,1),m,2)*conj(table(1,i,2))); % decoding x2
BX1(i,m)=h-2*real(r(k,1)*conj(H(1,1)*S(table(2,i,1),m,1)*table(2,i,2))+r(k,2)*conj(H(1,2))*S(table(2,i,1),m,1)); % decoding x1
BY1(i,m)=h-2*real(r(k,1)*conj(H(1,2)*S(table(2,i,1),m,2))-r(k,2)*conj(H(1,1))*S(table(2,i,1),m,2)*conj(table(2,i,2))); % decoding x2
end
path1(i,:)=BX(i,:)+BY(i,:);
path2(i,:)=BX1(i,:)+BY1(i,:);
[y1,x1]=min(path1(i,:));
[y2,x2]=min(path2(i,:));
zz(1)=y1+state(k-1,1,3);
zz(2)=y2+state(k-1,2,3);
[y, x]=min(zz);
switch x,
case 1,
state(k, i,:)=[1,x1-1, y,i-1];
case 2,
state(k, i, :)=[2,x2-1, y,i-1];
otherwise,
display('matric is error');
end;
end;
end;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -