MIMO功率分配算法注水原理.docx

上传人:b****4 文档编号:5917096 上传时间:2023-05-09 格式:DOCX 页数:11 大小:157.21KB
下载 相关 举报
MIMO功率分配算法注水原理.docx_第1页
第1页 / 共11页
MIMO功率分配算法注水原理.docx_第2页
第2页 / 共11页
MIMO功率分配算法注水原理.docx_第3页
第3页 / 共11页
MIMO功率分配算法注水原理.docx_第4页
第4页 / 共11页
MIMO功率分配算法注水原理.docx_第5页
第5页 / 共11页
MIMO功率分配算法注水原理.docx_第6页
第6页 / 共11页
MIMO功率分配算法注水原理.docx_第7页
第7页 / 共11页
MIMO功率分配算法注水原理.docx_第8页
第8页 / 共11页
MIMO功率分配算法注水原理.docx_第9页
第9页 / 共11页
MIMO功率分配算法注水原理.docx_第10页
第10页 / 共11页
MIMO功率分配算法注水原理.docx_第11页
第11页 / 共11页
亲,该文档总共11页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

MIMO功率分配算法注水原理.docx

《MIMO功率分配算法注水原理.docx》由会员分享,可在线阅读,更多相关《MIMO功率分配算法注水原理.docx(11页珍藏版)》请在冰点文库上搜索。

MIMO功率分配算法注水原理.docx

MIMO功率分配算法注水原理

1.1功率注水算法

注水算法是根据某种准则,并根据信道状况对发送功率进行自适应分配,通常是信道状况好的时刻,多分配功率,信道差的时候,少分配功率,从而最大化传输速率。

实现功率的“注水”分配,发送端必须知道CSI。

当接收端完全知道信道而发送端不知道信号时,发送天线阵列中的功率平均分配是合理的。

当发送端知道信道,可以增加信道容量。

考虑一个

维的零均值循环对称复高斯信号向量

,r为发送信道的秩。

向量在传送之前被乘以矩阵

)。

在接收端,接受到的信号向量y被乘以

这个系统的有效输入输出关系式由下式给出:

其中

维的变换的接受信号向量,

是协方差矩阵为

的零均值循环对称复高斯

变换噪声向量。

向量

必须满足

已限制总的发送能量。

可以看出

,i=1,2,…,r

MIMO信道的容量是单个平行SISO信道容量之和,由下式给出

其中

(i=1,2,…,r)反映了第i个子信道的发送能量,且满足

可以在子信道中分配可变的能量来最大化互信息。

现在互信息最大化问题就变成了:

最大化目标在变量

中是凹的,用拉格朗日法最大化。

最佳能量分配政策

注水算法:

Step1:

迭代计数p=1,计算

Step2:

用μ计算

,i=1,2,…,r-p+1

Step3:

若分配到最小增益的信道能量为负值,即设

,p=p+1,转至Step1.

若任意

非负,即得到最佳注水功率分配策略。

1.2发送端知道信道时的信道容量

%inthisprogrameahighlyscatteredenviromentisconsidered.The

%CapacityofaMIMOchannelwithnttransmitantennaandnrrecieve

%antennaisanalyzed.Thepowerinparallelchannel(after

%decomposition)isdistributedaswater-fillingalgorithm

clearall

closeall

clc

nt_V=[12324];

nr_V=[12234];

N0=1e-4;

B =1;

Iteration=1e2;%mustbegraterthan1e2

SNR_V_db=[-10:

3:

20];

SNR_V  =10.^(SNR_V_db/10);

color=['b';'r';'g';'k';'m'];

notation=['-o';'->';'<-';'-^';'-s'];

for(k=1:

5)

nt=nt_V(k);

nr=nr_V(k);

for(i=1:

length(SNR_V))

Pt=N0*SNR_V(i);

for(j=1:

Iteration)

H=random('rayleigh',1,nr,nt);

[SVD]=svd(H);

landas(:

j) =diag(V);

[Capacity(i,j)PowerAllo]=WaterFilling_alg(Pt,landas(:

j),B,N0);

end

end

f1=figure

(1);

holdon

plot(SNR_V_db,mean(Capacity'),notation(k,:

),'color',color(k,:

))

clearlandas

end

f1=figure

(1)

legend_str=[];

for(i=1:

length(nt_V))

legend_str=[legend_str;...

{['nt=',num2str(nt_V(i)),',nr=',num2str(nr_V(i))]}];

end

legend(legend_str)

gridon

set(f1,'color',[111])

xlabel('SNRindB')

ylabel('Capacitybits/s/Hz')

注水算法子函数

function[CapacityPowerAllo]=WaterFilling_alg(PtotA,ChA,B,N0);

%

%WaterFillinginOptimisingtheCapacity

%===============

%Initialization

%===============

ChA=ChA+eps;

NA=length(ChA);  %thenumberofsubchannelsallocatedto

H=ChA.^2/(B*N0); %theparameterrelatetoSNRinsubchannels

%assignthepowertosubchannel

PowerAllo=(PtotA+sum(1./H))/NA-1./H;

while(length(find(PowerAllo<0))>0)

IndexN=find(PowerAllo<=0);

IndexP=find(PowerAllo>0);

MP=length(IndexP);

PowerAllo(IndexN)=0;

ChAT=ChA(IndexP);

HT=ChAT.^2/(B*N0);

PowerAlloT=(PtotA+sum(1./HT))/MP-1./HT;

PowerAllo(IndexP)=PowerAlloT;

end

PowerAllo=PowerAllo.';  

Capacity =sum(log2(1+PowerAllo.'.*H));

注意:

的奇异值,所以对H奇异值分解后要平方ChA.^2

1.3发送端不知道信道时的信道容量

功率均等发送,信道容量的表达式为

clearall

clc

nt_V=[12324];

nr_V=[12234];

N0=1e-4;

B=1;

Iteration=1e2;%mustbegraterthan1e2

SNR_V_db=[-10:

3:

20];

SNR_V  =10.^(SNR_V_db/10);

color=['b';'r';'g';'k';'m'];

notation=[':

o';':

>';'<:

';':

^';':

s'];

for(k=1:

length(nt_V))

nt=nt_V(k);

nr=nr_V(k);

for(i=1:

length(SNR_V))

Pt=N0*SNR_V(i);

for(j=1:

Iteration)

H=random('rayleigh',1,nr,nt);

Capacity(i,j)=log2(det(eye(nr)+Pt/(nt*B*N0)*H*H'));

end

end

f2=figure

(2);

holdon

plot(SNR_V_db,mean(Capacity'),notation(k,:

),'color',color(k,:

))

clearlandas

end

f2=figure

(2)

legend_str=[];

for(i=1:

length(nt_V))

legend_str=[legend_str;...

{['nt=',num2str(nt_V(i)),',nr=',num2str(nr_V(i))]}];

end

legend(legend_str)

gridon

set(f2,'color',[111])

xlabel('SNRindB')

ylabel('Capacitybits/s/Hz')

1.4已知信道和未知信道容量比较

clearall

closeall

clc

nt_V=[12 3 2 4];

nr_V=[12 2 3 4];

N0=1e-4;

B =1;

Iteration=1e2;%mustbegreaterthan1e2

SNR_V_db=[-10:

3:

20];

SNR_V  =10.^(SNR_V_db/10);

color=['b';'r';'g';'k';'m'];

notation=['-o';'->';'<-';'-^';'-s'];

notation_uninf=[':

o';':

>';'<:

';':

^';':

s'];

for(k=1:

length(nt_V))

nt=nt_V(k);

nr=nr_V(k);

for(i=1:

length(SNR_V))

Pt=N0*SNR_V(i);

for(j=1:

Iteration)

H=random('rayleigh',1,nr,nt);

[SVD]=svd(H);

landas(:

j) =diag(V);

Capacity_uninf(i,j)=log2(det(eye(nr)+Pt/(nt*B*N0)*H*H'));

[Capacity(i,j)PowerAllo]=WaterFilling_alg(Pt,landas(:

j),B,N0);

end

end

f1=figure

(1);

holdon

plot(SNR_V_db,mean(Capacity'),notation(k,:

),'color',color(k,:

))

holdon

plot(SNR_V_db,mean(Capacity_uninf'),notation_uninf(k,:

),'color',color(k,:

))

clearlandas

end

gridon

set(f1,'color',[111])

xlabel('SNRindB')

ylabel('Capacitybits/s/Hz')

f1=figure

(1)

legend_str=[];

for(i=1:

length(nt_V))

legend_str=[legend_str;...

{['nt=',num2str(nt_V(i)),',nr=',num2str(nr_V(i))]}];

end

legend(legend_str)

gridon

set(f1,'color',[111])

xlabel('SNRindB')

ylabel('Capacitybits/s/Hz')

由图形中可以看出:

1.在小信噪比时,相同信噪比下利用CSI的功率注水算法获得容量优于未知CSI的平均功率分配算法;相同容量下已知CSI信噪比比未知CSI时的信噪比小3dB.

2.当信噪比增大到一定程度时,功率注水算法所获得的信道容量将收敛到平均功率分配的信道容量。

 

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 工程科技 > 能源化工

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2