MMSE法用于MIMO系统
之前讲到过迫零响应法(ZF)在MIMO系统中的应用,而另外一种均衡方法也常常用在不理想传输信道中,这就是最小误差法(Minimum Mean Square Error,简称MMSE)。
![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/5e604ff301fb819d6947ae66fb356ea4.png)
MMSE方法用于MIMO系统程序如下:
去博客设置页面,选择一款你喜欢的代码片高亮样式,下面展示同样高亮的 代码片
.
clear all;
close all;
SNR_dB=0:2:20;
K=4; %发射天线数量
L=4; %接收天线数量
Es=1; %把信号能量设置为1
len_SNR=length(SNR_dB);
N0_dB=10*log10(K*Es)-SNR_dB; %信噪比用对数形式表示时,SNR_dB=S_dB-N_dB,注意这里的信号功率要乘以K,因为有K路发射信号
N0=10.^(N0_dB/10); %实际噪声功率
count=zeros(1,len_SNR); %错误接受码元计数
BER=zeros(1,len_SNR); %误码率
N_block=5000; %信道最大块数
N_sym0=100; %每根天线处理的QPSK符号数
N_err=2000; %最小错误码元数
n_init=1; %信噪比指针
while (n_init<=len_SNR)&&(count(len_SNR)<N_block)
H=sqrt(0.5)*(randn(L,K)+1i*randn(L,K)); %产生L、K路QPSK信号,H信道冲激响应
Dt=round(rand(K,N_sym0)+1i*rand(K,N_sym0)); %发送K路QPSK信号
modDt=sqrt(Es/2)*(Dt*2-(1+1i));
HS=H*modDt; %接收端信号
Noise=sqrt(0.5)*(randn(L,N_sym0)+1i*randn(L,N_sym0)); %L路接收端的噪声
for n=n_init:len_SNR
count(n)=count(n)+1
n0=N0(n);
RxDt=HS+sqrt(n0)*Noise; %接收信号(考虑L路噪声影响)
W=inv(H'*H+n0*eye(K))*H'; %最小均方误差法求逆矩阵
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格式控制指令,表示5字长浮点数
BER=BER./(2*K*N_sym0*count);
semilogy(SNR_dB, BER, '-*');
strtitle=['MMSE for a ',num2str(K),'x',num2str(L),' QPSK System']; %strtitle表示字符标题
title(strtitle);
xlabel('Rx SNR per antenna (dB)');
ylabel('BER');
grid on;