-
大小: 1KB文件類型: .rar金幣: 2下載: 0 次發布日期: 2021-05-22
- 語言: Matlab
- 標簽: 功率分配??matlab??waterfilling??
資源簡介
非MATLAB自帶的waterfill函數。 waterfill2為自己編寫的帶完整注釋的注水功率分配算法。waterfill3為他人版本,以供參考。

代碼片段和文件信息
function?[allocatedpower?waterlv]?=?waterfill2(transpowernoisearr)
????%?WATERFILL2?returns?waterfill?algorithm?results?of?the?given?SNR?paras.
????%?注水算法,返回各個發射天線上分配的信號功率
????%?伴隨有完整算法注釋。為避免和MATLAB內嵌函數重名,故加上2后綴
????%?Author:?Jumper_Le?(Southeast?University)?20171125?Version.1
????
????[arisenoisedt]=sort(noisearr);
????%?升序排列noise方差序列
????for?p=length(arisenoise):-1:1
????????%?開始降序號循環
????????waterlevel=(transpower+sum(arisenoise(1:p)))/p;
????????%?計算當前前p個噪聲水平算出的水平面值
????????pouringpower=waterlevel-arisenoise;
????????%?計算以當前水平面,需要注入的水量
????????pp=pouringpower(1:p);
????????%?復制注入水量數組的前p個值到新變量pp
????????if(pp(:)>=0)
????????????break;
????????????%?如果當前情況下,注入水量均為正值(有意義),那么退出循環,確認注水結束
????????end
????????%?如果注入水量有負值,需要舍棄當前序列噪聲最大項,重新進行剩余項的注水分配
????end
????allocatedpower=zeros(1length(arisenoise));
????allocatedpower(dt(1:p))=pp;
????%?返回p長度的信號功率分配數組,剩余的項均為0,代表超出水平面(不考慮)
????waterlv=waterlevel;
????%?返回waterlevel
????
end
?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????文件???????1190??2017-11-26?02:12??waterfill2.m
?????文件???????1054??2017-11-26?12:08??waterfill3.m
-----------?---------??----------?-----??----
?????????????????2244????????????????????2
評論
共有 條評論