matlab里面seta,matlab函数调用的问题

clear all;close all;clc

NP=50;    %种群数量

Pc=0.8;   %交叉率

Pm=0.05;  %变异率

d=0.5;    %满阵阵元间距,半倍波长

lamda=1;  %波长

seta0=0*pi/180;     %波束指向

G=200;              %最大遗传代数

L=100;              %满阵阵元个数

NL=50;              %实际阵元个数

NN=1800;            %扫描角度间隔,根据阵元数确定

%%%%%%%%%生成初始种群%%%%%%%%%%%%%%

%%%%%%%%%0为没有阵元,1为有阵元%%%%%%%%%

f=randn(L.NP);

[sortff,Index]=sort(f);

f=zeros(L,NP);

for i=1:NP

f(Index(end-NL+1:end,i),i)=1;

end

%%%%%%%%%%遗传算法循环%%%%%%%%%%%%

for k=1:G

k;

%%%%%%%%%计算适应度,即峰值旁瓣比%%%%%%%%

for i=1:NP

Fit(i)=-func_line(d,lamda,NN,seta0,f(:,i));

end

maxFit=max(Fit);        %最大值

minFit=min(Fit);        %最小值

rr=find(Fit==maxFit);   %找出最大值

fBest=f(:,rr(1,1));     %历代最优个体

Fit=(Fit-minFit)/(maxFit-minFit);     %归一化适应度值

%%%%%%%%%基于轮盘赌的选择操作%%%%%%%%%%

sum_Fit=sum(Fit);

fitvalue=Fit./sum_Fit;

fitvalue=cumsum(fitvalue);

ms=sort(rand(NP,1));

fiti=1;

newi=1;

while newi<=NP

if(ms(newi))

nf(:,newi)=f(:,fiti);

newi=newi+1;

else

fiti=fiti+1;

end

end

%%%%%%%%%%%%%%基于概率的交叉操作%%%%%%%%%%%%%%%

for i=1:2:NP

p=rand;

if p

q=randint(1,L);

for j=1:L

if q(j)==1

temp=nf(j,j+1);

nf(j,j+1)=nf(j,i);

nf(j,i)=temp;

end

end

end

end

%%%%%%%%%%%%%基于概率的变异操作%%%%%%%%%%%

for m=1:NP

for n=1:l

r=rand(1,1);

if r

nf(n,m)=~nf(n,m);

end

end

end

%%%%%%%%%%%使交叉变异后的实际阵元个数不变%%%%%%%%%%%

for i=1:NP

n_ones=sum(nf(:,i));

while n_ones>(NL)

nn1=find(nf(:,1)==1);

MUT1=randint(1,n_ones-NL,[1,n_ones]);

for m=1:(n_ones-NL)

nf(nn1(MUT1(m)),i)=0;

end

n_ones=sun(nf(:,1));

end

while n_ones

nn2=find(nf(:,i)==0);

MUT2=randint(1,NL-n_ones,[1,l-n_ones]);

for m=1:(NL-n_ones)

nf(nn2(MUT2(m)),i)=1;

end

n_ones=sum(nf(:,i));

end

end

f=nf;             %保留最优个体在新种群中

trace(k)=maxFit   %历代最优适应度值

end

figure

plot(trace)

xlabel('迭代次数')

ylabel('目标函数值')

title('适应度进化曲线')

grid on

save fBest.mat fBest         %存储优化结果

这是一个fBest.mat的文件,我用下面的来调用:

%%%%%%%%%%%优化后方向图%%%%%%%%%%%%%

clc;close all;clear all

save best.mat

d=0.5;

lamda=1;

seta0=0*pi/180;

L=100;

NN=1800;

%%%%%%%%%%%%%%%%%%%%%%

seta=linspace(-pi/2,pi/2,NN);

for m=1:NN

fai=2*pi*d/lamda*(0:(L-1))*(sin(seta(m))-seta0);

F1(m)=abs(sum(exp(sqrt(-1)*fai).*fBest'));

end

FdB=20*log10(F1/max(F1));

figure

plot(seta*180/pi,FdB)

xlabel('\theta/(。)')

ylabel('阵列增益/dB')

grid on

axis([-90,90,-60,0])

figure

plot(fBest,'.')

xlabel('阵元位置')

ylabel('阵元标识')

grid on

asis([1,L,0.5,1.2])

一直显示:错误: 文件:fBest.m 行:30 列:5

变量 "fBest" 还是此脚本的名称。

这是非法的,因为它将是调用此脚本的任何上下文中的脚本名称和变量名称。

出错 youhua100_50 (line 13)

F1(m)=abs(sum(exp(sqrt(-1)*fai).*fBest'));

请问这个要怎么解决呢?这个是我在书上的原程序弄出来的,要怎么让其成功运行呢?

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值