📄 vblast.m
字号:
clear all
close all
%simulation parameters
N_loop = 100;
N_sym = 63;
N_bit = 2*N_sym;
noise_sigma = sqrt(0.5);
Eb_db = 4:4:28;
Eb = 10.^(Eb_db/10);
sqrt_Es = sqrt(2*Eb);
BER = zeros(1,length(Eb));
normalized = 1/sqrt(2);
p =3;
q =3;
Recov_data=[];
y=[];
for i=1:7;
BE=0;
for n = 1:N_loop;
D = sign(randn(1,N_sym))+j*sign(randn(1,N_sym));
%Tx_data = transpose(normalized*D);
Tx_data = transpose(normalized*D);
for s=1:N_sym/3
Noise = (1/sqrt_Es(i))*(randn(q,1)+j*randn(q,1));
H = randn(q,p)+j*randn(q,p);
h = normalized*H;
Rx_data = h*([Tx_data(3*s-2);Tx_data(3*s-1);Tx_data(3*s)]) + Noise;
pc = pinv(h);
L = zeros(1,p);
u=zeros(1,p);
for n = 1:3
for m = 1: p;
L(m) = (norm(pc(m,:)))^2;
end
for z=1:n-1
L(u(z))=inf;
end
[a,k] = min(L);
u(n)=k;
y = pc(k,:)*Rx_data;
b(k,:) = sign(real(y))+j*sign(imag(y));
Rx_data = Rx_data-(normalized*b(k)*h(:,k));
h(:,k)=0;
pc=pinv(h);
end
Recov_data(s*3-2:s*3-1:s*3,:)=b;
end
BE= BE + sum((abs(Recov_data-transpose(D))).^2)/N_bit;
end;
BER(i)=BE;
end
BER=BER/N_loop;
semilogy(Eb_db,BER,'r*-');
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -