明德烈 发表于 2015-1-13 15:42:50

求教MIMO关于信道估计的问题。

如题,主要研究两种估计方法。一是LS;而是MMSE。理论和推导基本都搞懂了,现在偏偏仿真出了问题。其中一个最主要问题是如果已知信道矩阵H,怎么样去求信道自相关矩阵Rh呢?查看很多代码,发现都是MIMO-OFDM的,但是我只需要弄MIMO的。下面是我的代码,图片中是我的运行结果,其中MMSE估计方法的实际误差和理论误差有一定差距,也不知道哪里出了错误。我想这应该是一个非常基本的问题,只是我还没懂。所以请各位大牛能抽出时间帮我解答解答,不胜感激。之所以贴出代码,是想应该有和我一样有这方面困惑的人,希望看完我的代码能有一些启发,请帮忙顶顶贴,好让大牛们能看到这个帖子,终结这个困惑。非常感谢!
下面是我的代码:
clc;
clear all;
M=16;%发送天线个数
N=16;%接收天线个数
% 以下为产生发送序列X
HRsum=zeros(M,M);
Rh=zeros(M,M);
%产生x
X=zeros(1,M);
X=rand(1,M)>0.5;
X=2*X-1;
%***************************************************************************%
for k=1:500
    H=1/(sqrt(2))*(randn(M,N)+j*randn(M,N));%产生信道矩阵H
    h=0; % 对信道矩阵进行归一化
    for i=1:N*M
   h=h+abs((H(i))).^2;
    end
    h=sqrt(h);
    H=H/h;   
    HRsum=HRsum+H*H'; % 计算自相关矩阵
   Rh=HRsum/k;   
    for ii=1:11
   r=2*ii;
   SNR(ii)=r;
   n1=ones(1,N);
   n1=n1*0.000000000000000001i;
   NOISE=awgn(n1,r);
   Rv=(10^(SNR(ii)/10))^(-1);
   Y=X*H+NOISE; %产生信号模型
       Hls =pinv((X))*Y;
   Hmmse=Rh*X'*inv((X*Rh*X'+Rv))*Y;
   Pn=(10^(SNR(ii)/10))^(-1); % 计算噪声功率
       mm_error=(abs(H-Hmmse)).^2;
   ls_error=(abs(H-Hls)).^2;
   standard_error = Rh-Rh*X'*(X*Rh*X'+Rv)^(-1)*X*Rh;
   mmse(k,ii)=mean(mm_error(:));
   ls(k,ii)=mean(ls_error(:));
   mmse_theroy(k,ii)=mean(standard_error(:));      
    end
end
mmse_mse_final=mean(mmse);
ls_mse_final=mean(ls);
mmse_theroy_final=mean(mmse_theroy);
plot(SNR,mmse_mse_final,'b-*')
hold on
plot(SNR,ls_mse_final,'r:o')
grid on
hold on
plot(SNR,mmse_theroy_final,'g-+');
title('平坦瑞利衰落信道下MMSE和LS的估计性能');
xlabel('SNR/dB');
ylabel('MSE(均方误差)');
% legend('MMSE信道估计','LS信道估计','MMSE最小均方误差(理论值)');
再次表示感谢!

页: [1]
查看完整版本: 求教MIMO关于信道估计的问题。