📄 quasidecode44.m
字号:
%decode layer by layer
function out=decode44(H,Nr,r,n,M)
%const=[1+j,1+j*3,3+j,3+j*3,1-j,1-3*j,3-j,3-3*j,-1+j,-1+3*j,-3+j,-3+3*j,-1-j,-1-3*j,-3-j,-3-3*j];
m1=[];m2=[];m3=[];g1=[];g2=[];g3=[];out=[];F=[];
for L=1:M
s(L)=qammod(L-1,M);
end
%s=genqammod(0:M-1,const);
if n==2
for t=1:Nr
m1=[conj(H(t,2)),-conj(H(t,1)),conj(H(t,4)),-conj(H(t,3))];
g1(2*t-1:2*t,:)=[H(t,:);m1];
end
r11=[r(:,1) conj(r(:,2))];
r_1=reshape(r11.',[],1);
elseif n==3
for t=1:Nr
m1=[conj(H(t,2)),-conj(H(t,1)),conj(H(t,4)),-conj(H(t,3))];
m2=[H(t,3),H(t,4),H(t,1),H(t,2)];
g1(3*t-2:3*t,:)=[H(t,:);m1;m2];
end
r11=[r(:,1) conj(r(:,2)) r(:,3)];
r_1=reshape(r11.',[],1);
else
for t=1:Nr
m1=[conj(H(t,2)),-conj(H(t,1)),conj(H(t,4)),-conj(H(t,3))];
m2=[H(t,3),H(t,4),H(t,1),H(t,2)];
m3=[conj(H(t,4)),-conj(H(t,3)),conj(H(t,2)),-conj(H(t,1))];
g1(4*t-3:4*t,:)=[H(t,:);m1;m2;m3];
end
r11=[r(:,1) conj(r(:,2)) r(:,3) conj(r(:,4))];
r_1=reshape(r11.',[],1);
end
% out1=pinv(g1)*r_1;
% out=genqamdemod(out1,const);
G=g1'*g1;
A=G(1:2,1:2);B=G(3:4,3:4);C=G(1:2,3:4);D=G(3:4,1:2);
W=[eye(2),-C*inv(B);-D*inv(A),eye(2)];
r1=W*g1'*r_1;
H1=W*G;
for i1=1:M
F1(i1)=norm(r1(1)-H1(1,1)*s(i1));
F2(i1)=norm(r1(2)-H1(2,2)*s(i1));
F3(i1)=norm(r1(3)-H1(3,3)*s(i1));
F4(i1)=norm(r1(4)-H1(4,4)*s(i1));
end
[v p]=min(F1);
S1=s(p);
[v p]=min(F2);
S2=s(p);
[v p]=min(F3);
S3=s(p);
[v p]=min(F4);
S4=s(p);
out1=[S1;S2;S3;S4];
out=qamdemod(out1,M);
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -