📄 waterfilling4x4.asv
字号:
function p = waterfilling4x4(Lm, jj, M, pp, signal_power)
%for ii=1:Lm %ii为循环变量,ii依次取1,2,3,...,Ln
%for jj=1:2
%for kk=1:2
%H(jj,kk)=(randn(1)+j*randn(1))*(sqrt(0.5));%randn(s)产生一维正态分布随机数组
%end;
%end;
aa(:,pp) = svd(M(:,:,pp)*M(:,:,pp)');
%for jj=1:SNR_num
snr=(jj-1)*2;
%snr=6;
snr_lin = 10^(snr/10);
%snr_lin = 10^(snr/10);
n = signal_power/snr_lin;%总发射功率恒定,噪声功率随信噪比的变化而变化
MM = signal_power/4 + (1/aa(1,pp) + 1/aa(2,pp) + 1/aa(3,pp) + 1/aa(4,pp));
for q = 1:1000
L1 = 4;
for i = 1:4
P(i) = max((MM-n/aa(i,pp)),0 + 0i);
if P(i) == 0
L1 = L1 - 1;
end;
end;
a = 0.1*(P(1) + P(2) + P(3) + P(4) - signal_power)/4;
a = 0.1*(P(1) + P(2) + P(3) + P(4) - signal_power)/4;
if abs(a) <= 0.0001
break;
else MM = MM - a;
end;
end;
p = blkdiag(P(1),P(2),P(3),P(4));
%end;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -