如题,主要研究两种估计方法。一是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')
grid on
hold on
plot(SNR,mmse_theroy_final,'g-+');
title('平坦瑞利衰落信道下MMSE和LS的估计性能');
xlabel('SNR/dB');
ylabel('MSE(均方误差)');
% legend('MMSE信道估计','LS信道估计','MMSE最小均方误差(理论值)');
再次表示感谢!
|
|
|
|
|
共 0 个关于本帖的回复 最后回复于 2015-1-13 15:42