vblast.m

来自「这个是我自己写的关于qpsk的MIMO信道的vblast的vblast算法,站长」· M 代码 · 共 65 行

M
65
字号
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 + =
减小字号Ctrl + -
显示快捷键?