Я пытаюсь написать код Matlab для выполнения алгоритма Waterfilling в каналах MIMO. Я написал код ниже, но что-то не так с моим WHL IE l oop, оно никогда не заканчивается, и я не могу понять, почему? !! Я пытаюсь написать код для данной формулы ниже. Не могли бы вы помочь мне исправить это?
вот код:
% Power allocated using Waterfilling
C_eigen=zeros(1,numel(SNR));
C_equal_t2=zeros(1,r);
K=zeros(1,numel(L));
P=zeros(1,r);
sq=0;
for i=1:numel(SNR)
p=1;
go = true;
while go
for j=1:r-p+1
K(j)=1/L(j);
T =sum(K);
end;
m =(1/(r-p+1))*(1+ (1/SNR(i))*T);
for j=1:r-p+1
P(j)= m-(1/(SNR(i)*L(j)));
if P(r-p+1)< 0
P(r-p+1)=0;
p =p+1;
end;
end;
sq = sum(P);
if sq <= 1.00005
go = false;
end;
end;
for j=1:r
C_equal_t2(j)=log2(1+SNR(i)*L(j)*P(j));
C_eigen(i)=sum(C_equal_t2);
end;
end;