注水算法
- 格式:doc
- 大小:259.00 KB
- 文档页数:7
NATLAB程序代码注水算法遍历容量仿真程序代码clearj=sqrt(-1);%平方根函数即虚数iMr=[1246];Mt=[1246];LRT=length(Mr);%取Mr的长度SNR=0:20;%信噪比范围0~20Lsnr=length(SNR);%SNR的长度testnum=2^(12);for ln=1:LRT;%for循环范围1到LRTmR=Mr(ln);%接收天线数量.mT=Mt(ln);%发送天线数量.For lm=1:Lsnr;snr=10^(SNR(lm)/10);for ll=1:testnum,H_matrix=(randn(mT,mR)+j*randn(mT,mR))/sqrt(2);%H复矩阵%randn产生标准正态矩阵M_Channl=H_matrix*H_matrix';%信道是H与H的转置相乘[Vect,D]=eig(M_Channl);%求M的全部特征值构成VECT,M%的特征向量构成D的列向量F_matrix=eye(size(D))+snr*D./mT;%size()获取矩阵的行数和列%数eye()主对角线为1其他为0的矩阵G_mt(ll)=sum(log2(diag(F_matrix)));endC_mt(ln,lm)=sum(G_mt)/testnum;endendQ(1,:)=C_mt(3,:);save capacity Q;figure(1);%产生一副图片plot(SNR,C_mt(1,:),'k-*','LineWidth',2);hold on;%不覆盖原图plot(SNR,C_mt(2,:),'k-p','LineWidth',2);plot(SNR,C_mt(3,:),'k-h','LineWidth',2);plot(SNR,C_mt(4,:),'k-v','LineWidth',2);xlabel('信噪比\rho(dB)','FontSize',14);%横坐标字体14ylabel('遍历容量C(bit/s/Hz)','FontSize',14);legend('N_T=N_R=1','N_T=N_R=2','N_T=N_R=4','N_T=N_R =6');hold off发送端已知信道参数仿真程序代码clearM=4;j=sqrt(-1);testnum=2^(12);SNR=0:20;Lsnr=length(SNR);for nl=1:Lsnr;snr=10^(SNR(nl)/10);for K=1:testnum,T=randn(M,M)+j*randn(M,M);T=T/sqrt(2);I=eye(M);eigen=eig(T*T');%extract eigenvaluesgamma=zeros(M,1);gamma=watfill(snr,T,M);a=I+(snr/M)*diag(gamma).*diag(eigen);a=det(a);y(K)=log2(a);enda_var(nl)=sum(y)/testnum;endload capacity Q;b_var=Q;figure(1);plot(SNR,b_var,'k-','LineWidth',2);hold on;plot(SNR,a_var,'k-*','LineWidth',2);gridxlabel('信噪比\rho(dB)','FontSize',14'); ylabel('遍历性容量[bit/s/Hz]','FontSize',14); legend('unknown','known');axis([020,030]);hold off注水算法子函数:function[y_out U_out]=watfill(snr,H,M) [UH eigvalue]=eig(H);[eigenD xD]=sort(diag(-eigvalue)); eigen=-eigenD;for rn=1:M;if abs(eigen(rn))<=0.001;rx(rn)=0.0;elserx(rn)=eigen(rn);endendR_matrix=diag(rx);UH=UH(:,xD);r=rank(R_matrix);rou=M/snr;for mk=1:r;consta=rx(mk);p=1;temp2=0.0;for nk=1:r-p+1,constb=rx(nk);if constb~=0.0;temp1=1/constb;temp2=temp2+temp1; temp1=0.0;elsetemp1=0.0;temp2=temp2+temp1; endif r-p+1~=0,const=mRT/(r-p+1);mu=const*(1+temp2/snr); elsemu=0;endendconstc=mu-rou/consta;if constc<0constc=0;p=p+1;mu=0;elsemu=0;endgamma(mk)=constc;endLG=length(gamma);y_out=[gamma zeros(1,M-LG)]; U_out=UH;。
迭代注水算法-回复什么是迭代注水算法?迭代注水算法(Iterative Re-weighted Least Squares, 简称IRLS)是一种用于估计参数的迭代优化算法。
它主要应用于解决线性回归问题,特别是在存在异常值(outliers)情况下的回归分析。
IRLS算法的核心思想是通过反复迭代,不断更新权重,并重新估计模型参数,以提高对异常值的鲁棒性。
下面将一步一步详细介绍迭代注水算法的原理和步骤。
1. 初始模型建立:首先,我们需要建立初始的线性回归模型。
线性回归模型是通过将自变量与因变量之间的关系形式化为一个线性方程来描述的,其中模型的参数即为我们所要估计的。
2. 权重初始化:在IRLS算法中,引入了权重的概念。
权重用于衡量每个样本点在模型估计中的重要性,通常情况下,我们会将每个样本的权重初始化为1。
3. 迭代更新:在每一次迭代中,我们首先利用当前权重对参数进行估计,然后根据估计结果更新权重。
迭代更新的过程会重复多次,直到满足收敛条件为止。
4. 参数估计:在每一次迭代中,根据当前的权重估计参数。
为了估计参数,可以使用广义最小二乘法(GLS)来求解。
GLS是一种基于加权最小二乘法的估计方法,它考虑了每个样本点的权重,将不同权重的样本进行加权处理,从而得到最优的参数估计。
5. 权重更新:在每轮迭代的最后,根据当前估计的模型参数对每个样本的残差进行计算,并根据残差大小更新每个样本的权重。
通常情况下,迭代更新的原则是:对于残差较小的样本,赋予比较大的权重;对于残差较大的样本,赋予较小的权重。
6. 收敛判断:在每一轮迭代之后,我们需要判断当前估计的模型参数与上一轮估计之间的差异是否已经很小,即是否满足收敛条件。
如果满足收敛条件,则停止迭代;如果不满足收敛条件,则继续进行下一轮迭代。
7. 算法输出:当IRLS算法停止迭代时,输出最终的参数估计结果。
这些参数估计可以帮助我们更好地理解自变量与因变量之间的关系,并用于进一步的分析和预测。
注水量体积公式
一立方米的水重量是1000kg,也就是人们常说的一吨。
换算公式m=pvp代表密度,v代表体积,m代表质量p=1000kg/m^3v=1m^3带入公式得出。
水的体积计算公式:V=m/ρ。
水,化学式为H₂O,是由氢、氧两种元素组成的无机物,无毒,可饮用。
在常温常压下为无色无味的透明液体,被称为人类生命的源泉。
水是地球上最常见的物质之一,是包括无机化合、人类在内所有生命生存的重要资源,也是生物体最重要的组成部分。
体积,几何学专业术语。
当物体占据的空间是三维空间时,所占空间的大小叫做该物体的体积。
体积的国际单位制是立方米。
一维空间物件(如线)及二维空间物件(如正方形)都是零体积的。
注水功率算法在频率选择性衰落明显的信道中,OFDM 的不同的子信道受到不同的衰落,因此有不同的传输能力,将自适应技术应用于 OFDM 系统,根据子信道的瞬时特性动态地分配数据速率和传输功率,可以优化系统性能。
在单用户 OFDM 系统中,由于频率选择性衰落的缘故,有相当一部分子信道由于衰落严重而不应被使用;而在多用户 OFDM 系统中,由于传输路径不同,使得相对于某一用户衰落严重的子信道,对于其他用户的衰落并不一定严重。
事实上,各用户的衰落是相互独立的,很少会出现对所有用户都严重衰落的子信道。
因此,在OFDM系统中,采用自适应资源分配和调制技术,即根据信道的瞬时特性在每个OFDM 符号周期内分配给每个子信道不同的信息比特数,使系统达到最大比特率。
各子信道信息分配应遵循信息论中的“注水定理”,亦即优质信道多传送,较差信道少传送,劣质信道不传送的原则。
下图里面1/λ是由环境(多径衰落、SNR)决定的功率阈值,那些阶梯表示子信道的状态,越靠下信道越好。
由1/λ和子信道的状态来决定在各子信道中如何分配功率。
(图14 中的P* 就表示对那个阶梯层(即子信道)分配的功率多少,也就是1/λ和阶梯层的差值)。
信道状态越好,分配的功率越多,越差就越少,当状态差的程度超过阈值1/λ就不在该子信道上分配功率了。
这样就好比在一个池子里放水,水面的高度就是1/λ,而池底的分布就由各子信道状态来组成(即图中的阶梯),因此叫注水算法。
20|)(|f H N 0*1=Pλ1*2P*3P子载波nN 个子载波的注水功率分配注水算法是根据某种准则,并根据信道状况对发送功率进行自适应分配,通常是信道状 况好的时刻,多分配功率,信道差的时候,少分配功率,从而最大化传输速率。
实现功率的 “注水”分配,发送端必须知道CSI 。
当接收端完全知道信道而发送端不知道信号时,发送天线列中的功率平均分配是合理的。
当发送端知道信道,可以增加信道容量。
考虑一个1⨯r 维的零均值循环对称复高斯信号向量s ~,r 为发送信道的秩。
1.注水井利用率计算公式:以每月数据库、注水报表数据为准计算。
%100-⨯=待报废井(口)-(口)计划关井数(口)注水井总井数注水井开井数(口)注水井利用率 开井数是指当月内连续注水24h 以上,并有一定注水量的注水井数之和。
在间开制度下的间歇注水井,有一定的注水量,也算开井数。
计划关井必须在月度配注公报中注明,并说明原因。
式中:(1)计划关井:测试及措施作业占用井;钻井施工要求停注的井;为开展研究实验及调整井网、层系而停住的井;周期注水井;因水资源保护区、城市规划区等安全环保原因的关井。
(2)因井网残缺、无效注水关井、井筒落物、套管变形、注不进、井下事故、地面等原因关闭的注水井或长关井,不属于计划关井。
(3)待报废井:指油田公司已初步审查同意,待正式批复的注水井。
2.计划指标完成率计算公式:以公司下达的各项计划工作量进行考核,完成数据以数据库及报表数据为准。
完成指标包括:注水井钻井、投注井、转注井、油水井测试及措施、注水专项。
%100计划完成量指标实际完成量=计划指标完成率⨯ 3.单井配注合格率计算公式:以每月的配注公报及数据库、注水报表数据为准计算。
%100注水井开井数注水井配注合格井数配注合格率(%)⨯= 说明:水井月平均注水量不超过配注量的20%,不低于配注量的10%的注水井算合格井。
配注5方以下,±1方为合格;配注5-10方,±15%为合格。
月内调整配注的井,以生产时间较长的工作制度计算配注合格率,如果两种工作制度生产时间差不多,以最后一次工作制度计算配注合格率。
4.站点水质达标率站单项水质达标率。
反映站点实际单项水质指标达到标准水质指标的程度。
达标率=标准值/实际值×100%(当实际值小于标准直时,达标率取100%)。
站综合水质达标率。
为站多个单项水质达标率的平均值。
站综合水质达标率=∑站单项水质达标率/站水质指标检测项数。
5、油井生产时率=油井实际生产时间(小时)/油井计划生产时间(小时)*100%油井计划生产时间,为间歇抽油应该生产的时间。
注水算法原理注水算法(Water Filling Algorithm)是一种常用的信号处理算法,主要用于无线通信系统中的功率分配问题。
其原理是根据信道的信噪比情况,将总功率按照一定的规则分配到各个子载波上,以达到最优的传输性能。
本文将介绍注水算法的基本原理和应用。
首先,我们来看一下注水算法的基本原理。
在无线通信系统中,信道的信噪比是一个非常重要的参数,它直接影响到信号的传输质量。
在一个多载波的通信系统中,不同的子载波的信道质量是不同的,有些子载波的信道质量较好,有些子载波的信道质量较差。
注水算法的基本思想就是将总功率按照信道质量的大小进行分配,即在信道质量较好的子载波上分配更多的功率,在信道质量较差的子载波上分配较少的功率,以达到整体传输性能的最优化。
其次,我们来看一下注水算法的应用。
注水算法主要应用于多载波通信系统中的功率分配问题,例如正交频分复用(OFDM)系统、多载波码分多址(MC-CDMA)系统等。
在这些系统中,由于信道的多样性,不同的子载波之间的信道质量存在较大差异,因此需要采用注水算法来进行功率分配,以提高系统的整体传输性能。
在实际应用中,注水算法需要考虑的因素有很多,例如信道的动态变化、用户间的干扰、系统的功率限制等。
因此,如何设计高效的注水算法成为了无线通信系统中的一个重要问题。
目前,针对不同的通信系统和应用场景,研究人员提出了许多改进的注水算法,如基于子载波分组的注水算法、考虑干扰的注水算法等,这些算法在不同的场景下都取得了一定的成果。
总的来说,注水算法作为一种常用的功率分配算法,在无线通信系统中发挥着重要的作用。
通过合理地分配功率,可以有效地提高系统的传输性能,提高系统的容量和覆盖范围。
随着通信技术的不断发展,注水算法也将会得到进一步的改进和应用,为无线通信系统的发展做出更大的贡献。
通过本文的介绍,相信读者对注水算法的原理和应用有了一定的了解。
希望本文能够对相关领域的研究和应用工作有所帮助。
注水相关指标计算公式及说明-CAL-FENGHAI.-(YICAI)-Company One1注水考核相关计算公式及说明1.注水井利用率计算公式:以每月数据库、注水报表数据为准计算。
%100-⨯=待报废井(口)-(口)计划关井数(口)注水井总井数注水井开井数(口)注水井利用率开井数是指当月内连续注水24h 以上,并有一定注水量的注水井数之和。
在间开制度下的间歇注水井,有一定的注水量,也算开井数。
计划关井必须在月度配注公报中注明,并说明原因。
式中:(1)计划关井:测试及措施作业占用井;钻井施工要求停注的井;为开展研究实验及调整井网、层系而停住的井;周期注水井;因水资源保护区、城市规划区等安全环保原因的关井。
(2)因井网残缺、无效注水关井、井筒落物、套管变形、注不进、井下事故、地面等原因关闭的注水井或长关井,不属于计划关井。
(3)待报废井:指油田公司已初步审查同意,待正式批复的注水井。
2.计划指标完成率计算公式:以公司下达的各项计划工作量进行考核,完成数据以数据库及报表数据为准。
完成指标包括:注水井钻井、投注井、转注井、油水井测试及措施、注水专项。
%100计划完成量指标实际完成量=计划指标完成率⨯ 3.单井配注合格率计算公式:以每月的配注公报及数据库、注水报表数据为准计算。
%100注水井开井数注水井配注合格井数配注合格率(%)⨯= 说明:水井月平均注水量不超过配注量的20%,不低于配注量的10%的注水井算合格井。
配注5方以下,±1方为合格;配注5-10方,±15%为合格。
月内调整配注的井,以生产时间较长的工作制度计算配注合格率,如果两种工作制度生产时间差不多,以最后一次工作制度计算配注合格率。
4.站点水质达标率站单项水质达标率。
反映站点实际单项水质指标达到标准水质指标的程度。
达标率=标准值/实际值×100%(当实际值小于标准直时,达标率取100%)。
站综合水质达标率。
为站多个单项水质达标率的平均值。
注水量的计算方法嘿,咱今儿就来聊聊注水量的计算方法,这可真是个有意思的事儿呢!你想想看啊,就好像咱平时做饭要放多少水一样,多了不行,少了也不行。
注水量也是这个道理呀!那怎么算呢?咱先得搞清楚要注水的是个啥东西。
是个大水池子?还是一条小水沟?这可大不一样嘞!要是个大水池子,那咱就得量量它的长、宽、高,这就好比是给它做个体检,把它的身材尺寸都搞清楚。
然后呢,用长乘宽乘高,就能算出它的体积来啦。
这体积就好比是这个水池子能装多少东西的指标。
那要是条小水沟呢?那也得量量它的长度和宽度,还有深度呀!把这些数据都弄到手,也能算出个大概的容量来。
可别小瞧了这些数据,这就跟咱走路得知道往哪儿走一样重要!要是算错了,那可就闹笑话啦。
比如说,本来应该注半池水,结果你给算成了一池水,那水不就溢出来了,那不就白折腾啦!再比如说,你要给花浇水,总不能一股脑儿地倒很多水吧?那花不得被淹死呀!得根据花盆的大小,土的干湿程度来计算该倒多少水。
这就跟注水量的计算是一个道理呀!你说这注水量的计算是不是很神奇?就像变魔术一样,通过几个数字就能知道该放多少水。
这可不是随随便便就能搞定的事儿哦,得认真对待,就像对待咱自己的宝贝一样。
想象一下,如果你是个工程师,要建造一个大水库,那注水量的计算可就更重要啦!要是算错了一点,那后果可不堪设想呀!水库可能会漏水,或者根本装不满水,那得多糟糕呀!咱平常生活中也经常会碰到和注水量有关的事儿呢。
比如洗车的时候,你得知道用多少水合适吧?不能浪费水呀!还有给游泳池注水,那也是有讲究的。
总之呢,注水量的计算方法可不能小瞧,它关系到好多事情呢!咱得认真对待,仔细琢磨,就像对待一门艺术一样。
可别觉得这是个小事情就不在乎,有时候,小事情也能变成大问题嘞!你说是不是这个理儿?所以啊,咱可得把注水量的计算方法学好,用好了,这样才能让生活中的各种事情都顺顺利利的呀!。
迭代注水算法-回复什么是迭代注水算法?迭代注水算法是一种用于求解密码学中一类特殊问题的算法。
它通过多次迭代注入“毒药”,逐渐摧毁目标数据的可操纵性或解密性。
该算法广泛应用于密码攻击、信息保护等领域,以提高数据安全性和破解密码的成功率。
迭代注水算法的基本原理迭代注水算法最基本的原理是通过多次迭代将“毒药”逐渐注入目标数据,使其逐步变得不可操纵或可解密。
这一过程中需要判断目标数据的变化,如果成功改变了目标数据的属性,就可以判断注水算法的有效性。
迭代注水算法的实现步骤1. 确定目标数据和注水参数:首先需要确定目标数据,即待攻击或需要保护的数据。
同时,也需要设定合适的注水参数,如注水次数、毒药类型等。
2. 选择合适的注水方式:注水方式决定了如何将“毒药”注入目标数据。
一般来说,有多种注水方式可供选择,如位操作、异或运算、位移等。
选择合适的注水方式可以提高算法的效果。
3. 设计注水策略:注水策略是决定何时以及如何注水的规则集合。
在注水算法中,适当的注水策略可以提高数据的安全性和破解密码的成功率。
4. 迭代注水过程:通过循环迭代,将“毒药”逐渐注入目标数据。
每次迭代都会依据注水策略更新数据。
迭代的次数和注水的方式会根据具体需求而定。
5. 监测数据变化:在迭代注水过程中,需要实时监测目标数据的变化。
如果数据的相应属性发生了明显变化,就可以判断注水算法的有效性。
同时,也可以根据数据变化的情况调整注水策略。
6. 判断注水结果:根据监测到的数据变化,可以判断注水算法的结果。
如果目标数据变得不可操纵或不可解密,就说明注水算法取得了成功。
迭代注水算法的优势和应用领域迭代注水算法具有以下优势:1. 提高数据安全性:通过多次迭代注水,使目标数据变得不可操纵或可解密。
这一过程中,数据的安全性得到进一步提高。
2. 增加破解密码的成功率:迭代注水算法可以帮助攻击者更快地破解密码。
通过多次迭代,攻击者可以找到更合适的注水策略,提高破解密码的成功率。
注水算法matlab程序-回复注水算法(Water Injection Algorithm)是一种常用于图像处理的方法,主要用于增强图像的对比度和边缘细节。
它通过增加或减少图像中的灰度级数量,使图像更加清晰和易于分析。
在本文中,我们将逐步解释注水算法的原理和Matlab实现。
第一步:原理概述注水算法的核心思想是通过改变图像中像素的灰度级分布,来增强图像中的边缘细节和对比度。
它借鉴了物理学中的注水现象,通过注入或抽取像素级别的水分来调整图像的灰度级分布。
第二步:Matlab实现准备在开始实现注水算法之前,我们需要先确保计算机中安装了Matlab软件,并且图像处理工具包已经正确安装。
这些步骤可以通过访问Matlab官方网站获取相应的软件安装包和安装指南。
一旦Matlab准备就绪,我们就可以开始实现注水算法了。
第三步:图像读取和预处理首先,我们需要从磁盘中读取一张待处理的图像。
在Matlab中,可以使用imread函数来完成这个任务。
读取图像后,我们可以对其进行一些预处理操作,例如图像灰度化或直方图均衡化。
这些操作有助于提取图像中的细节信息,并为后续的注水算法做好准备。
第四步:注水算法实现在这一步中,我们将开始实现注水算法的核心部分。
首先,我们需要确定要在图像中注入或抽取的水分量。
这可以通过设定一个阈值来实现。
然后,我们可以根据阈值和图像中每个像素的灰度级别来决定是否注入或抽取水分。
具体来说,我们可以使用一个循环来遍历整个图像,并根据像素灰度级别的高低进行判断。
如果灰度级别高于阈值,则可以注入水分,使灰度级别变高;如果灰度级别低于阈值,则可以抽取水分,使灰度级别变低。
这样做可以增加图像中的对比度和细节。
此外,我们还可以应用一些滤波器来平滑图像并去除噪声。
例如,可以使用均值滤波器或高斯滤波器来平滑图像。
这些滤波器有助于进一步提高图像质量和减少噪声。
第五步:图像保存和展示在完成注水算法的实现后,我们还需要将处理后的图像保存到磁盘中,并进行展示。
1.1功率注水算法注水算法是根据某种准则,并根据信道状况对发送功率进行自适应分配,通常是信道状况好的时刻,多分配功率,信道差的时候,少分配功率,从而最大化传输速率。
实现功率的“注水”分配,发送端必须知道CSI 。
当接收端完全知道信道而发送端不知道信号时,发送天线阵列中的功率平均分配是合理的。
当发送端知道信道,可以增加信道容量。
考虑一个1⨯r 维的零均值循环对称复高斯信号向量s ~,r 为发送信道的秩。
向量在传送之前被乘以矩阵V (H V U H ∑=)。
在接收端,接受到的信号向量y 被乘以H U 。
这个系统的有效输入输出关系式由下式给出:n s M E n U s V V U U M E n U s HV U M E y Ts H H HTs H H T s ~~~~~+∑=+∑=+=s其中y ~是1⨯r 维的变换的接受信号向量,n ~是协方差矩阵为rH I N n n 0}~~{=ξ的零均值循环对称复高斯1⨯r 变换噪声向量。
向量s ~必须满足T HM s s =}~~{ξ已限制总的发送能量。
可以看出ii i Tsi n s M E y ~~~+=λ,i=1,2,…,r MIMO 信道的容量是单个平行SISO 信道容量之和,由下式给出∑=+=ri i T is N M E C 12)1(log λγ其中2{}i i s γξ=(i=1,2,…,r)反映了第i 个子信道的发送能量,且满足T ri iM =∑=1γ。
可以在子信道中分配可变的能量来最大化互信息。
现在互信息最大化问题就变成了:121)max log (1)r i T i rs i i i T M E C M N γγλ====+∑∑最大化目标在变量),..,1(r i i =γ中是凹的,用拉格朗日法最大化。
最佳能量分配政策max{(),0}opt T i s i M N E γμλ=-1ropt T ii M γ==∑注水算法:Step1:迭代计数p=1,计算1011[1]1r p TsiN M r p E μλ-+=+-+∑Step2:用μ计算is T i E N M λμγ0-=,i=1,2,…,r -p+1 Step3:若分配到最小增益的信道能量为负值,即设01=+-p r γ,p=p+1,转至Step1. 若任意i γ非负,即得到最佳注水功率分配策略。
1.2 发送端知道信道时的信道容量% in this programe a highly scattered enviroment is considered. The % Capacity of a MIMO channel with nt transmit antenna and nr recieve % antenna is analyzed. The power in parallel channel (after % decomposition) is distributed as water-filling algorithm clear all close all clcnt_V = [1 2 3 2 4]; nr_V = [1 2 2 3 4]; N0 = 1e-4; B = 1;Iteration = 1e2; % must be grater than 1e2 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);[S V D] = svd(H);landas(:,j) = diag(V);[Capacity(i,j) PowerAllo] = WaterFilling_alg(Pt,landas(:,j),B,N0);endendf1 = figure(1);hold onplot(SNR_V_db,mean(Capacity'),notation(k,:),'color',color(k,:))clear landasendf1 = figure(1)legend_str = [];for( i = 1 : length(nt_V))legend_str =[ legend_str ;...{['nt = ',num2str(nt_V(i)),' , nr = ',num2str(nr_V(i))]}];endlegend(legend_str)grid onset(f1,'color',[1 1 1])xlabel('SNR in dB')ylabel('Capacity bits/s/Hz')注水算法子函数function [Capacity PowerAllo] = WaterFilling_alg(PtotA,ChA,B,N0);%% WaterFilling in Optimising the Capacity%===============% Initialization%===============ChA = ChA + eps;NA = length(ChA); % the number of subchannels allocated toH = ChA.^2/(B*N0); % the parameter relate to SNR in subchannels% assign the power to subchannelPowerAllo = (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; endPowerAllo = PowerAllo.';Capacity = sum(log2(1+ PowerAllo.' .* H));注意:λ是H HH 的奇异值,所以对H 奇异值分解后要平方ChA.^21.3 发送端不知道信道时的信道容量功率均等发送,信道容量的表达式为H T n HH n P I W C R 22log σ+=clear all clcnt_V = [1 2 3 2 4]; nr_V = [1 2 2 3 4]; N0 = 1e-4; B = 1;Iteration = 1e2; % must be grater than 1e2 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'));endendf2= figure(2);hold onplot(SNR_V_db,mean(Capacity'),notation(k,:),'color',color(k,:)) clear landasendf2= figure(2)legend_str = [];for( i = 1 : length(nt_V))legend_str =[ legend_str ;...{['nt = ',num2str(nt_V(i)),' , nr = ',num2str(nr_V(i))]}];endlegend(legend_str)grid onset(f2,'color',[1 1 1])xlabel('SNR in dB')ylabel('Capacity bits/s/Hz')1.4 已知信道和未知信道容量比较clear allclose allclcnt_V = [1 2 3 2 4];nr_V = [1 2 2 3 4];N0 = 1e-4;B = 1;Iteration = 1e2; % must be grater than 1e2SNR_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);[S V D] = 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);endendf1 = figure(1);hold onplot(SNR_V_db,mean(Capacity'),notation(k,:),'color',color(k,:))hold onplot(SNR_V_db,mean(Capacity_uninf'),notation_uninf (k,:),'color',color(k,:)) clear landasendgrid onset(f1,'color',[1 1 1])xlabel('SNR in dB')ylabel('Capacity bits/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))]}];endlegend(legend_str)grid onset(f1,'color',[1 1 1])xlabel('SNR in dB')ylabel('Capacity bits/s/Hz')由图形中可以看出:1.在小信噪比时,相同信噪比下利用CSI的功率注水算法获得容量优于未知CSI的平均功率分配算法;相同容量下已知CSI信噪比比未知CSI时的信噪比小3dB.2.当信噪比增大到一定程度时,功率注水算法所获得的信道容量将收敛到平均功率分配的信道容量。