?? calculateobjectvalue.asv
字號:
function[Fitness]=CalculateObjectValue(Phi,M,N)
dr=0.8;
k=2*pi*dr;
Value=ones(M,201);
MaxValue=zeros(M,1);
Index=zeros(M,1);
% find the max value and it's index
s=0;
for j=1:M
for f=-1:0.01:1
s=s+1;
for n=1:N
Value(j,s)=Value(j,s)+exp(i*(k*f*n+Phi(j,n)));
end
Value(j,s)=abs(Value(j,s));
if Value(j,1)>MaxValue(j,s)
MaxValue(j,1)=Value(j,s);
Index(j,1)=f;
end
Value(j,s)=1;
end
end
Lmin=MaxValue;
LIndex=zeros(M,1);
Value=zeros(M,1);
Value1=ones(M,1);
% find the first minimal value on the left
for j=1:M
for f=Index(j,1):-0.01:-1
for n=1:N
Value1(j,1)=Value1(j,1)+exp(i*(k*f*n+Phi(j,n)));
end
Value(j,1)=abs(Value1(j,1));
if Value(j,1)<=Lmin(j,1)
Lmin(j,1)=Value(j,1);
else
break;
end
Value1(j,1)=1;
LIndex(j,1)=f;
end
end
% find the first minimal value on the right
Rmin=MaxValue;
RIndex=zeros(M,1);
Value=zeros(M,1);
Value1=ones(M,1);
for j=1:M
for f=Index(j,1):0.01:1
for n=1:N
Value1(j,1)=Value1(j,1)+exp(i*(k*f*n+Phi(j,n)));
end
Value(j,1)=abs(Value1(j,1));
if Value(j,1)<=Rmin(j,1)
Rmin(j,1)=Value(j,1);
else
break;
end
Value1(j,1)=1;
RIndex(j,1)=f;
end
end
Value=ones(M,1);
Lmax=zeros(M,1);
for j=1:M
for f=-1:0.01:LIndex(j,1)
for n=1:N
Value(j,1)=Value1(j,1)+exp(i*(k*f*n+Phi(j,n)));
end
Value(j,1)=abs(Value(j,1));
if Lmax(j,1)<Value(j,1)
Lmax(j,1)=Value(j,1);
end
Value(j,1)=1;
end
end
Value=ones(M,1);
Rmax=zeros(M,1);
for j=1:M
for f=-1:0.01:RIndex(j,1)
for n=1:N
Value(j,1)=Value1(j,1)+exp(i*(k*f*n+Phi(j,n)));
end
Value(j,1)=abs(Value(j,1));
if Rmax(j,1)<Value(j,1)
Rmax(j,1)=Value(j,1);
end
Value(j,1)=1;
end
end
% the Fitness value
LV=Lmax./MaxValue;
RV=Rmax./MaxValue;
dBLV=10*log10(LV);
dBRV=10*log10(RV);
V=ones(M,1);
Fitness=V.*28-((max(0,(dBLV+17))+max(0,(dBRV+11))));
RIndex
LIndex
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -