文档介绍:该【mimo信道容量计算 】是由【小吴】上传分享,文档一共【11】页,该文档可以免费在线阅读,需要了解更多关于【mimo信道容量计算 】的内容,可以使用淘豆网的站内搜索功能,选择自己适合的文档,以下文字是截取该文章内的部分文字,如需要获得完整电子版,请下载此文档到您的设备,方便您编辑和打印。实验一:MIMO信道容量计算
实验学时:3
实验类型:〔演示、验证、综合、设计、√研究〕
实验要求:〔√必修、选修〕
一、实验目的
通过本实验的学习,理解和掌握信道容量的概念和物理意义;了解多天线系统信道容量的计算方法;采用计算机编程实现经典的注水算法。
二、实验内容
MIMO信道容量;
注水算法原理;
采用计算机编程实现注水算法。
三、实验组织运行要求
以学生自主训练为主的开放模式组织教学
四、实验条件
〔1〕微机
〔2〕MATLAB编程工具
五、实验原理、方法和手段
MIMO〔MIMO,MultipleInputMultipleOutput〕技术利用多根天线实现多发多收,充分利用了空间资源,在有限的频谱资源上可以实现高速率和大容量,已成为4G通信系统以及未来无线通信系统的关键技术之一。
图1平坦衰弱MIMO信道模型
MIMO指多输入多输出系统,当发送信号所占用的带宽足够小的时候,信道可以被认为是平坦的,即不考虑频率选择性衰落。平坦衰弱的MIMO信道可以用一个的复数矩阵描述:
〔1〕
其中为发送端天线数,为接收端天线数,的元素表示从第根发射天线到第根接收天线之间的空间信道衰落系数。
窄带MIMO信道模型〔如图1所示〕可以描述为:
〔2〕
其中,为发送信号;为接收信号;为加性高斯白噪声。
假设服从均值为0,协方差为单位阵的复高斯分布。根据信道容量的定义,可以证明当服从高斯分布时,到达MIMO信道容量。令的协方差矩阵为,那么MIMO信道容量可表示为:
〔3〕
其中上标‘H’表示复共轭,为单位阵,det表示取行列式。表示单位带宽下的MIMO信道传输速率,单位为Nat/sec。
发射机的传输功率可以表示为:
其中,表示向量的模,Tr表示取矩阵的迹,E表示求期望。
假设发射机的最大传输功率为,那么功率约束下的MIMO信道容量计算问题可以描述为:
〔4〕
即在功率约束下找到的最正确分布使得信道容量最大。此处表示为半正定矩阵。
将信道矩阵进行奇异值分解,即可分解为,其中和为酉矩阵满足
,
为的矩形对角矩阵。
利用恒等式和酉矩阵性质,得到
〔5〕
利用恒等式和酉矩阵性质,得到
〔6〕
定义,利用〔5〕和〔6〕,问题〔4〕可写为:
〔7〕
经过变量替换,令,问题〔7〕〔.,(4)〕等价为
〔8〕
根据Hadamard不等式〔参考?信息论根底?,〕,问题〔8〕的最优解必为对角阵。因此问题〔8〕可简化为
〔9〕
其中,r为〔或者〕的秩,和分别为和的对角元素。
〔water-filling〕算法求解问题〔9〕
对问题〔9〕使用拉格朗日乘子法,可知最优解必须满足:
其中为拉格朗日乘子。为求得,需先确定,它满足
(10)
注意左边为的递增函数,因此满足〔10〕的唯一。
找到满足〔10〕的的方法可形象地称为注水〔warter-filling〕。这是因为,我们可以将看做是第片区域的水平线,然后对整个区域注水,使其具有深度
,如图1所示。所需总水量为,不断注水,直至总水量为,。第个区域的水位深度即为最优的。
图2注水算法图示。每片区域的高度为。注水总量为,对整个区域
注水使其高度到达。每片区域上水的高度〔阴影局部所示〕即为最优的。
六、实验数据及具体步骤
1〕随机产生,每个信道系数服从均值为0,方差为1的高斯分布〔对Rayliegh分布〕
2)奇异值分解〔利用matlabSVD函数〕
3〕计算
4〕注水法求解问题〔9〕
5〕计算,根据〔3〕计算容量〔或者根据问题〔9〕的最优值确定最大容量〕。
七、实验程序和结果
一、有一并联高斯加性信道,各子信道的方差为d12=,d22=,d32=,d42=,d52=,d62=,d72=,d82=,d92=,d102=。
1、假设输入的信号总功率P=5
程序
L=input('子信道数目L=');%输入子信道数目
d=input('各子信道噪声方差d=');%输入各信道的噪声方差
P=input('输入信号总功率P=');%输入信号总功率
D=sum(d);%各子信道的方差和
Pav=(P+D)*;%求平均输出频率
i=1;
p=ones(1,L);%功率初始值
boolean=1;
c=0;%关闭的信道数量
while(boolean)
while(i<=L)
if(Pav<d(i)&p(i)~=0)%找出不符合的子信道并赋值为0
p(i)=0;
D=D-d(i);
c=c+1;
end
i=i+1;
end
if(c==0)%当所有信道满足时退出循环
break;
end
if(i==L+1)%每个信道和Pav比照一遍后初始化各值,并重新计算Pav
i=1;
L=L-c;
c=0;
Pav=(P+D)*;
end
end
L=length(ai);
fori=1:L
if(p(i)~=0)
p(i)=Pav-d(i);%计算各子信道分配功率
end
end
C=0;
fori=1:L
C=C+1/2*log2(1+p(i)/d(i));
end
p
C输出
>>WF
子信道数目L=10
各子信道噪声方差d=[]
输入信号总功率P=5
p=
Columns1through8
Columns9through10
C=
>>WF
子信道数目L=10
各子信道噪声方差d=[]
输入信号总功率P=1
p=
Columns1through8
Columns9through10
00
C=
二、实验题目
clearall;
nt=[248];
nr=[248];
v=0;%给定1/v初始值〔也就是这里的v〕
forcount=1:3
y=0;
forPTdb=0:5:30
y=y+1;
PT=10^(PTdb/10);%把PT转化为10进制
fork=1:1000
H=sqrt(1/2)*complex(randn(nr(count),nt(count)),randn(nr(count),nt(count)));%随机产生H,每个信道系数服从均值为0,方差为1的高斯分布〔对Rayliegh分布〕(sqrt(1/2)为了使模也为1)
[U,D,VH]=svd(H);%奇异值分解H=U*D*VH
A=D'*D;%求DH*D
ai=sort((1./diag(A))');%求ai并按从小到大排序
L=length(ai);
AI=sum(ai);%各子信道的方差和
Pav=(PT+AI)/L;%求平均输出频率
i=1;
p=ones(1,L);%功率初始值
boolean=1;
ct=0;%关闭的信道数量
while(boolean)
while(i<=L)
if(Pav<ai(i)&p(i)~=0)%找出不符合的子信道并赋值为0
p(i)=0;
AI=AI-ai(i);
ct=ct+1;
end
i=i+1;
end
if(ct==0)%当所有信道满足时退出循环
break;
end
if(i==L+1)%每个信道和Pav比照一遍后初始化各值,并重新计算Pav
i=1;
L=L-ct;
ct=0;
Pav=(PT+AI)/L;
end
end
fori=1:L
if(p(i)~=0)
p(i)=Pav-ai(i);%计算各子信道分配功率
end
end
X=diag(p);
Rx=VH'*X*VH;%计算Rx=V*X*VH
T=H*Rx*H';
L=length(ai);
I=diag(ones(1,L));
c(k)=log2(det(T+I));%I为单位阵,det表示取行列式。c表示单位带宽下的MIMO信道传输速率,单位为Nat/sec。
end
C(y)=real(sum(c))/1000;
pt(y)=PTdb;
end
switchcount
case1
plot(pt,C,'r-*');
holdon;
case2
plot(pt,C,'y-p');
holdon;
case3
plot(pt,C,'g-s');
holdon;
end
end
legend('nt=nr=2','nt=nr=4','nt=nr=8');
title('MIMO信道容量与功率关系图');
xlabel('功率/dB');
ylabel('容量/Nat/sec');
gridon;
输出