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;