当前位置:文档之家› MIMO信道容量计算

MIMO信道容量计算

MIMO信道容量计算
MIMO信道容量计算

实验一:MIMO信道容量计算

实验学时:3

实验类型:(演示、验证、综合、设计、√研究)

实验要求:(√必修、选修)

一、实验目的

通过本实验的学习,理解和掌握信道容量的概念和物理意义;了解多天线系统信道容量的计算方法;采用计算机编程实现经典的注水算法。

二、实验内容

MIMO信道容量;

注水算法原理;

采用计算机编程实现注水算法。

三、实验组织运行要求

以学生自主训练为主的开放模式组织教学

四、实验条件

(1)微机

(2)MATLAB编程工具

五、实验原理、方法和手段

MIMO(MIMO,Multiple Input Multiple Output)技术利用多根天线实现多发多收,充分利用了空间资源,在有限的频谱资源上可以实现高速率和大容量,已成为4G通信系统以及未来无线通信系统的关键技术之一。

图1平坦衰弱MIMO信道模型

1.MIMO 信道模型

MIMO 指多输入多输出系统,当发送信号所占用的带宽足够小的时候,信道可以被认为是平坦的,即不考虑频率选择性衰落。平坦衰弱的MIMO 信道可以用一个R T n n ?的复数矩阵H 描述:

1112

12122

212

T T R T R R n n n n n n h h h h h h h h h ??

?

?

??

=?

???

????

H (1) 其中T n 为发送端天线数,R n 为接收端天线数,H 的元素,j i h 表示从第i 根发射天线到第j 根接收天线之间的空间信道衰落系数。

窄带MIMO 信道模型(如图1所示)可以描述为:

=+y Hx n (2)

其中,x 为发送信号;y 为接收信号;n 为加性高斯白噪声。

2.MIMO 信道容量

假设n 服从均值为0,协方差为单位阵的复高斯分布。根据信道容量

()

max{(;)}p X C I X Y =的定义,可以证明当()p x 服从高斯分布时,达到MIMO 信道

容量。令x 的协方差矩阵为x R ,则MIMO 信道容量可表示为:

()()log det H C +x x R I HR H (3)

其中上标‘H ’表示复共轭,I 为单位阵,det 表示取行列式。()C x R 表示单位带宽下的MIMO 信道传输速率,单位为Nat/sec 。

发射机的传输功率可以表示为:

{}

(){}{}()

()

2

H H

P E E Tr Tr E Tr ===x x

xx xx R

其中,x 表示向量的模,Tr 表示取矩阵的迹,E 表示求期望。

假设发射机的最大传输功率为T P ,则功率约束下的MIMO 信道容量计算问题可以描述为:

()

()0

max log det ...

H T s t Tr P ≥+≤x x R x I HR H R (4)

即在功率约束下找到x 的最佳分布使得信道容量最大。此处0≥x R 表示x R 为半正定矩阵。

3.奇异值分解及问题转化

将信道矩阵进行奇异值分解,即H 可分解为H =H UDV ,其中U 和V 为酉矩阵满足

;;;H H H H ====UU I U U I V V I VV I ,

D 为R T n n ?的矩形对角矩阵。

利用恒等式()()det det +=+I AB I BA 和酉矩阵性质H =U U I ,得到

()()()

()

det det det det H H H H H H H

H H H

+=+=+=+x x x x

I UDV R VD U I U UDV R VD I DV R VD

I D DV R V

(5)

利用恒等式()()Tr Tr =AB BA 和酉矩阵性质H =V V I ,得到

()()()H H Tr Tr Tr ==x x x R VV R V R V (6)

定义H ΛD D ,利用(5)和(6),问题(4)可写为:

()()0

max log det ...

H

H H

T s t Tr P ≥+≤x x V R V x I ΛV R V V R V (7)

经过变量替换,令H

x X V R V ,问题(7)

(i.e., (4))等价为

()

()0

m a x l o g d e t ...

T

s t T r P ≥+≤

X I ΛX X (8)

根据Hadamard 不等式(参考《信息论基础》Thomas M. Cover ,定理16.8.2),问题(8)的最优解X 必为对角阵。因此问题(8)可简化为

{}01

1

max log 1...

i r

i x i i r

i

T i x s t

x

P α≥==??+ ???

≤∑∑ (9)

其中,r 为H (或者Λ)的秩,i x 和

1

i

α分别为X 和Λ的对角元素。

4.注水(water-filling )算法 求解问题(9)

对问题(9)使用拉格朗日乘子法,可知最优解必须满足:

1

1max ,0,

1,2...i i r

i

T

i x i r

v x

P α=??

=-= ???

=∑

其中μ为拉格朗日乘子。为求得i x ,需先确定1

v

,它满足

1

1max ,0r

i T i P

v α=??-= ???∑ (10) 注意左边为1v 的递增函数,因此满足(10)的1

v

唯一。

找到满足(10)的1

v

的方法可形象地称为注水(warter-filling )。这是因为,

我们可以将i α看做是第i 片区域的水平线,然后对整个区域注水,使其具有深度

1/v ,如图1所示。所需总水量为{}

1max 0,1/n

i i v α=-∑,不断注水,直至总水量

为T P ,。第i 个区域的水位深度即为最优的*

i x 。

*

1v

图2 注水算法图示。每片区域的高度为i α。注水总量为T P ,对整个区域

注水使其高度达到*

1/v 。每片区域上水的高度(阴影部分所示)即为最优的*i x 。

六、实验数据及具体步骤

1)随机产生H ,每个信道系数服从均值为0,方差为1的高斯分布(对Rayliegh 分布)

2) 奇异值分解H =H UDV (利用matlab SVD 函数) 3)计算H

=ΛD D 4)注水法求解问题(9)

5)计算H =x R VXV ,根据(3)计算容量(或者根据问题(9)的最优值确定最大容量)。

七、实验程序和结果

一、有一并联高斯加性信道,各子信道的方差为d 12=0.1,d 22=0.2,d 32=0.3,d 42=0.4,d 52=0.5,d 62=0.6,d 72=0.7,d 82=0.8,d 92=0.9,d 102=1.0。 1、若输入的信号总功率P=5 程序

L=input('子信道数目 L='); %输入子信道数目

d=input('各子信道噪声方差 d='); %输入各信道的噪声方差 P=input('输入信号总功率 P='); %输入信号总功率 D=sum(d); %各子信道的方差和 Pav=(P+D)*1.0/L; %求平均输出频率 i=1;

p=ones(1,L); %功率初始值

boolean=1;

c=0; %关闭的信道数量

while(boolean)

while(i<=L)

if(Pav

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)*1.0/L;

end

end

L=length(ai);

for i=1:L

if(p(i)~=0)

p(i)=Pav-d(i); %计算各子信道分配功率

end

end

C=0;

for i=1:L

C=C+1/2*log2(1+p(i)/d(i));

end

p

C输出

>> WF

子信道数目L=10

各子信道噪声方差d=[0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1.0]

输入信号总功率P=5

p =

Columns 1 through 8

0.9500 0.8500 0.7500 0.6500 0.5500 0.4500 0.3500 0.2500 Columns 9 through 10

0.1500 0.0500

C =

6.0661

>> WF

子信道数目L=10

各子信道噪声方差d=[0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1.0]

输入信号总功率P=1

p =

Columns 1 through 8

0.4000 0.3000 0.2000 0.1000 0 0 0 0 Columns 9 through 10

0 0

C =

2.3514

二、实验题目

clear all;

nt=[2 4 8];

nr=[2 4 8];

v=0; %给定1/v初始值(也就是这里的v)

for count=1:3

y=0;

for PTdb=0:5:30

y=y+1;

PT=10^(PTdb/10); %把PT转化为10进制

for k=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

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

for i=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

switch count

case 1

plot(pt,C,'r-*');

hold on;

case 2

plot(pt,C,'y-p');

hold on;

case 3

plot(pt,C,'g-s');

hold on;

end

end

legend('nt=nr=2','nt=nr=4','nt=nr=8'); title('MIMO信道容量与功率关系图'); xlabel('功率/dB');

ylabel('容量/Nat/sec');

grid on;

输出

八、实验心得

在本次的实验中,我了解了注水法的思想,并且学会了如何使用注水法来求解MIMO 的信道容量和子信道的分配功率。注水法的思想:我们可以将ai 看做是第i 片区域的水平线,然后对整个区域注水,使其具有深度1/v 。所需总水量为

{}1

max 0,1/n

i i v

α=-∑,

不断注水,直至总水量为PT 。第i 个区域的水位深度即为最优的xi 。在解决书上的问题时,我们要考虑到每次平均功率都要重算,并且要知道如何找到该关闭的子信道。实验题目时我们要注意一些数据的初始值不能少。

相关主题
文本预览
相关文档 最新文档