📄 depre_spatialmultiplexing.m
字号:
function x=depre_spatialMultiplexing(y,P,v,index_codeBook,index_CDD,numbits)
if P = 2;%P is the numbers of antenna ports;
switch index_codeBook
case 0
if v==1 ;
W = 1 /sqrt(2) * [1,1]';
else
W= 1 /sqrt(2) * [1,0;0,1];
end
case 1
if v==1;
W = 1 /sqrt(2) * [1,-1]';
else
W = 1 /2 * [1,1;1,-1];
end
case 2
if v==1;
W= 1 /sqrt(2) * [1,j].';
else
W = 1 /2 * [1,1;j,-j];
end
case 3
if v==1;
W = 1 /sqrt(2) * [1,-j].';
else
W = [];
end
end;
else P= 4;%P is the numbers of antenna ports;
I = eye(4);
% for n = 1:16;
% u=[1,-1,-1,-1;1,-j,1,j;1,1,-1,1;1,j,1,-j;1,(-1-j)/sqrt(2),-j,(1-j)/sqrt(2);1,(1-j)/sqrt(2),j,(-1-j)/sqrt(2);1,(1+j)/sqrt(2),-j,(-1+j)/sqrt(2);1,(-1+j)/sqrt(2),j,(1+j)/sqrt(2);1,-1,1,1;1,-j,-1,-j;1,1,1,-1;1,j,-1,j;1,-1,-1,1;1,-1,1,-1;1,1,-1,-1;1,1,1,1].';
% U(n)=u(:,n);
% end;
switch index_codeBook
case 0
u=[1,-1,-1,-1].';
W1= I - 2u * u' / (u' * u);
if v==1;
W = W1(;,1);
elseif v==2;
W= W1(:,[1,4]) /sqrt(2) ;
elseif v==3;
W = W1(:,[1,2,4]) /sqrt(3);
else
W= W1(:,[1,2,3,4]) /2;
end
case 1
u = [1,-j,1,j].';
W1= I - 2u * u' / (u' * u);
if v==1;
W= W1(:,1);
elseif v==2;
W = W1(:,[1,2]) /sqrt(2);
elseif v==3;
W = W1(:,[1,2,3]) /sqrt(3) ;
else
W = W1(:,[1,2,3,4]) /2 ;
end
case 2
u=[1,1,-1,1].';
W1= I - 2u * u' / (u' * u);
if v==1;
W = W1(:,1);
elseif v==2;
W = W1(:,[1,2]) /sqrt(2) ;
elseif v==3;
W = W1(:,[1,2,3]) /sqrt(3) ;
else
W = W1(:,[3,2,1,4]) /2 ;
end
case 3
u= [1,j,1,-j].';
W1= I - 2u * u' / (u' * u);
if v==1;
W = W1(:,1);
elseif v==2;
W = W1(:,[1,2]) /sqrt(2) ;
elseif v==3;
W= W1(:,[1,2,3]) /sqrt(3) ;
else
W = W1(:,[3,2,1,4]) /2 ;
end
case 4
u= [1,(-1-j)/sqrt(2),-j,(1-j)/sqrt(2)].';
W1= I - 2u * u' / (u' * u);
if v==1;
W = W1(:,1);
elseif v==2;
W = W1(:,[1,4]) /sqrt(2) ;
elseif v==3;
W = W1(:,[1,2,4]) /sqrt(3) ;
else
W = W1(:,[1,2,3,4]) /2 ;
end
case 5
u = [1,(1-j)/sqrt(2),j,(-1-j)/sqrt(2)].';
W1= I - 2u * u' / (u' * u);
if v==1;
W = W1(:,1);
elseif v==2;
W = W1(:,[1,4]) /sqrt(2) ;
elseif v==3;
W = W1(:,[1,2,4])/sqrt(3) ;
else
W = W1(:,[1,2,3,4])/2;
end
case 6
u = [1,(1+j)/sqrt(2),-j,(-1+j)/sqrt(2)].';
W1= I - 2u * u' / (u' * u);
if v==1;
W = W1(:,1);
elseif v==2;
W = W1(:,[1,3])/sqrt(2) ;
elseif v==3;
W = W1(:,[1,3,4])/sqrt(3) ;
else
W = W1(:,[1,3,2,4])/2;
end
case 7
u= [1,(-1+j)/sqrt(2),j,(1+j)/sqrt(2)].';
W1= I - 2u * u' / (u' * u);
if v==1;
W = W1(:,1);
elseif v==2;
W = W1(:,[1,3])/sqrt(2) ;
elseif v==3;
W = W1(:,[1,3,4])/sqrt(3) ;
else
W = W1(:,[1,3,2,4])/2;
end
case 8
u = [1,-1,1,1].';
W1= I - 2u * u' / (u' * u);
if v==1;
W = W1(:,1);
elseif v==2;
W = W1(:,[1,2])/sqrt(2);
elseif v==3;
W = W1(:,[1,2,4])/sqrt(3);
else
W = W1(:,[1,2,3,4])/2 ;
end
case 9
u = [1,-j,-1,-j].';
W1= I - 2u * u' / (u' * u);
if v==1;
W = W1(:,1);
elseif v==2;
W = W1(:,[1,4])/sqrt(2) ;
elseif v==3;
W = W1(:,[1,3,4])/sqrt(3) ;
else
W = W1(:,[1,2,3,4])/2 ;
end
case 10
u= [1,1,1,-1].';
W1= I - 2u * u' / (u' * u);
if v==1
W = W1(:,1);
elseif v==2;
W = W1(:,[1,3])/sqrt(2) ;
elseif v==3;
W = W1(:,[1,2,3])/sqrt(3);
else
W = W1(:,[1,3,2,4])/2 ;
end
case 11
u = [1,j,-1,j].';
W1= I - 2u * u' / (u' * u);
if v==1;
W = W1(:,1);
elseif v==2;
W = W1(:,[1,3])/sqrt(2);
elseif v==3;
W = W1(:,[1,3,4])/sqrt(3);
else
W = W1(:,[1,3,2,4])/2 ;
end
case 12
u = [1,-1,-1,1].';
W1= I - 2u * u' / (u' * u);
if v==1
W = W1(:,1);
elseif v==2;
W = W1(:,[1,2])/sqrt(2);
elseif v==3;
W= W1(:,[1,2,3])/sqrt(3) ;
else
W = W1(:,[1,2,3,4])/2 ;
end
case 13
u = [1,-1,1,-1].';
W1= I - 2u * u' / (u' * u);
if v==1;
W = W1(:,1);
elseif v==2;
W = W1(:,[1,3])/sqrt(2) ;
elseif v==3;
W = W1(:,[1,2,3])/sqrt(3) ;
else
W = W1(:,[1,3,2,4])/2 ;
end
case 14
u = [1,1,-1,-1].';
W1= I - 2u * u' / (u' * u);
if v==1;
W = W1(:,1);
elseif v==2;
W = W1(:,[1,3])/sqrt(2) ;
elseif v==3;
W = W1(:,[1,2,3])/sqrt(3) ;
else
W = W1(:,[3,2,1,4])/2 ;
end
case 15
u = [1,1,1,1].';
W1= I - 2u * u' / (u' * u);
if v==1;
W = W1(:,1);
elseif v==2;
W = W1(:,[1,2])/sqrt(2);
elseif v==3;
W = W1(:,[1,2,3])/sqrt(3) ;
else
W = W1(:,[1,2,3,4])/2 ;
end
end;
end;
M_ap=numbits/8;
for i=1:M_ap
%index_CDD由高层给出;
if index_CDD=0% without cyclic delay diversity ;
[Q,R]=qr(W);
x=R\(Q\y);
else index_CDD=1;%large delay CDD;
switch v
case 1
U = [1];
D(i) = [1];
case 2
U = 1/sqrt(2) * [1,1;1,exp(-j*pi)];
D(i) = diag([1,exp(-j*pi*i)]);
case 3
U = 1/sqrt(3) * [1,1,1;1,exp(-j*2*pi/3),exp(-j*4*pi/3);1,exp(-j*4*pi/3),exp(-j*8*pi/3)];
D(i) = diag([1,exp(-j*2*pi*i/3),exp(-j*4*pi*i/3)]);
case 4
U = 1/2 * [1,1,1,1;1,exp(-j*2*pi/4),exp(-j*4*pi/4),exp(-j*6*pi/4);1,exp(-j*4*pi/4),exp(-j*8*pi/4),exp(-j*12*pi/4);1,exp(-j*6*pi/4),exp(-j*12*pi/4),exp(-j*18*pi/4)];
D(i) = diag([1,exp(-j*2*pi*i/4),exp(-j*4*pi*i/4),exp(-j*6*pi*i/4)]);
end;
[Q,R]=qr(W);
x(i)=U\(D(i)\(R\(Q\y(i))));
end;
end;
x;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -