MIMO信道容量计算.docx

MIMO信道容量计算.docx
MIMO信道容量计算.docx

实验一: MIMO 信道容量计算

实验学时:3

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

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

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

MIMO 信道容量; 注水算法原理;

采用计算机编程实现注水算法。 三、实验组织运行要求

以学生自主训练为主的开放模式组织教学 四、实验条件

(1)微机

(2)MATLAB 编程工具 五、实验原理、方法和手段

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

图1平坦衰弱MIMO 信道模型

1.MIMO 信道模型

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

R T

n n ?的复数矩阵H 描述:

111212122212T 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 信道容量可表示为:

()()

logdet 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

max log det ...

T s t Tr 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

,需先确定1v ,它满足

11max ,0r

i T

i P v α=??-= ???∑ (10)

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

v 唯一。

找到满足(10)的1

v 的方法可形象地称为注水(warter-filling )。这是因为,我们可以将i α看做是第i 片区域的水平线,然后对整个区域注水,使

其具有深度1/v ,如图1所示。所需总水量为

{}

1

max 0,1/n

i i v

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

T

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

*

i x 。

*

1

v

图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;

输出

相关主题
相关文档
最新文档