Application of MMSE Method in MIMO System

Application of MMSE Method in MIMO System


The application of zero-forcing response (ZF) method in MIMO system has been mentioned before. Another equalization method is often used in unsatisfactory transmission channels, which is Minimum Mean Square Error (MMSE).

The MMSE method is used in MIMO system program as follows:

go Blog settings Page, choose a highlighted style of your favorite code slice, the following shows the same highlighted code slice.

clear all;
close all;
SNR_dB=0:2:20;
K=4;                     %Number of transmit antennas
L=4;                     %Number of receiving antennas
Es=1;                    %Set the signal energy to1
len_SNR=length(SNR_dB);
N0_dB=10*log10(K*Es)-SNR_dB;  %When the signal-to-noise ratio is expressed in logarithmic form, SNR_dB=S_dB-N_dB,Notice that the signal power here is multiplied byK,Because there isKRoad Emission Signal
N0=10.^(N0_dB/10);       %Actual noise power
count=zeros(1,len_SNR);  %Error Acceptance Symbol Counting
BER=zeros(1,len_SNR);    %error rate
N_block=5000;            %Maximum Block Number of Channels
N_sym0=100;              %Each antenna handlesQPSKSymbol number
N_err=2000;              %Minimum number of error symbols
n_init=1;                %Signal to Noise Ratio Pointer
while (n_init<=len_SNR)&&(count(len_SNR)<N_block)
	H=sqrt(0.5)*(randn(L,K)+1i*randn(L,K));          %produceL,KroadQPSKSignal,HChannel impulse response
    Dt=round(rand(K,N_sym0)+1i*rand(K,N_sym0));      %Send outKroadQPSKsignal
    modDt=sqrt(Es/2)*(Dt*2-(1+1i));
    HS=H*modDt;                                      %Receiver signal
	Noise=sqrt(0.5)*(randn(L,N_sym0)+1i*randn(L,N_sym0));  %LNoise of Road Receiver
    for n=n_init:len_SNR
        count(n)=count(n)+1
        n0=N0(n);
        RxDt=HS+sqrt(n0)*Noise;                      %Receive the signal (consider)LRoad Noise Impact)
        W=inv(H'*H+n0*eye(K))*H';                    %Minimum Mean Square Error Method for Inverse Matrix
        zt=W*RxDt;
        estDt=(sign(real(zt))+1i*sign(imag(zt))+1+1i)/2;
        err=abs(round(Dt-estDt)).^2;
        BER(n)=BER(n)+sum(sum(err));
    end;  
    if mean(BER(n_init))>=N_err   
        n_init=n_init+1;
    end;   
end; 
format short e;                                       %format short e Format control instructions, representations5Word Length Floating Point
BER=BER./(2*K*N_sym0*count);
semilogy(SNR_dB, BER, '-*');
strtitle=['MMSE for a ',num2str(K),'x',num2str(L),' QPSK System'];  %strtitle Representation character title
title(strtitle);
xlabel('Rx SNR per antenna (dB)');
ylabel('BER');
grid on;

Posted by A JM on Sun, 31 Mar 2019 22:00:30 -0700