大神,我用你的程序改了一下总是报错,能给指点一下么,谢谢!下面是我附的程序及目标曲线
function fit=fitness(x)
load bb.txt%将b.txt放在工作空间目录中
p2=bb;
pi=3.14;
lamda = 0.022;
k = 2*pi/lamda;
d = 0.02486;
p2m=size(p2,1);
[xm,xn]=size(x);
fit=zeros(xm,1);
for i=1:xm
theta=-90:1:90;
for m=1:length(theta)
pp=x(i,1)*exp(j*x(i,2)*pi/360)*exp(j*1*k*d*sin(theta(m)*pi/180))+...
x(i,3)*exp(j*x(i,4)*pi/360)*exp(j*2*k*d*sin(theta(m)*pi/180))+...
x(i,5)*exp(j*x(i,6)*pi/360)*exp(j*3*k*d*sin(theta(m)*pi/180))+...
x(i,7)*exp(j*x(i,8)*pi/360)*exp(j*4*k*d*sin(theta(m)*pi/180))+...
x(i,9)*exp(j*x(i,10)*pi/360)*exp(j*5*k*d*sin(theta(m)*pi/180))+...
x(i,11)*exp(j*x(i,12)*pi/360)*exp(j*6*k*d*sin(theta(m)*pi/180))+...
x(i,13)*exp(j*x(i,14)*pi/360)*exp(j*7*k*d*sin(theta(m)*pi/180))+...
x(i,15)*exp(j*x(i,16)*pi/360)*exp(j*8*k*d*sin(theta(m)*pi/180))+...
x(i,17)*exp(j*x(i,18)*pi/360)*exp(j*9*k*d*sin(theta(m)*pi/180))+...
x(i,19)*exp(j*x(i,20)*pi/360)*exp(j*10*k*d*sin(theta(m)*pi/180))+...
x(i,21)*exp(j*x(i,22)*pi/360)*exp(j*11*k*d*sin(theta(m)*pi/180))+...
x(i,23)*exp(j*x(i,24)*pi/360)*exp(j*12*k*d*sin(theta(m)*pi/180));
% ff=sum(pp);
end
end
fff=abs(pp);
fit(i)=sqrt(sum((fff-p2).^2));%目标函数,最小二乘法定义的目标函数,方差最小
%% 绘图
if xm==1
i=1;
theta=-90:1:90;
for m=1:length(theta)
pp=x(i,1)*exp(j*x(i,2)*pi/360)*exp(j*1*k*d*sin(theta(m)*pi/180))+...
x(i,3)*exp(j*x(i,4)*pi/360)*exp(j*2*k*d*sin(theta(m)*pi/180))+...
x(i,5)*exp(j*x(i,6)*pi/360)*exp(j*3*k*d*sin(theta(m)*pi/180))+...
x(i,7)*exp(j*x(i,8)*pi/360)*exp(j*4*k*d*sin(theta(m)*pi/180))+...
x(i,9)*exp(j*x(i,10)*pi/360)*exp(j*5*k*d*sin(theta(m)*pi/180))+...
x(i,11)*exp(j*x(i,12)*pi/360)*exp(j*6*k*d*sin(theta(m)*pi/180))+...
x(i,13)*exp(j*x(i,14)*pi/360)*exp(j*7*k*d*sin(theta(m)*pi/180))+...
x(i,15)*exp(j*x(i,16)*pi/360)*exp(j*8*k*d*sin(theta(m)*pi/180))+...
x(i,17)*exp(j*x(i,18)*pi/360)*exp(j*9*k*d*sin(theta(m)*pi/180))+...
x(i,19)*exp(j*x(i,20)*pi/360)*exp(j*10*k*d*sin(theta(m)*pi/180))+...
x(i,21)*exp(j*x(i,22)*pi/360)*exp(j*11*k*d*sin(theta(m)*pi/180))+...
x(i,23)*exp(j*x(i,24)*pi/360)*exp(j*12*k*d*sin(theta(m)*pi/180));
end
fff=abs(pp);
figure()
scatter(1:p2m,fff)
hold on
plot(dBy,'r')
scatter(1:p2m,p2,'full')
plot(p2,'b')
legend('','拟合数据','','原始数据')
figure()
plot(x,'r')
end
end
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%b.txt(目标曲线)
0.000000
0.000000
0.000000
0.000000
0.000000
0.000000
0.000000
0.000000
0.000000
0.000000
0.000000
0.000000
0.000000
0.000000
0.000000
0.000000
0.000000
0.000000
0.000000
0.000000
0.000000
0.000000
0.000000
0.000000
0.000000
0.000000
0.000000
0.000000
0.000000
0.000000
0.000000
0.000000
0.000000
0.000000
0.000000
0.000000
0.000000
0.000000
0.000000
0.000000
0.000000
0.000000
0.000000
0.000000
0.000000
0.000000
0.000000
0.000000
0.000000
0.000000
0.000000
0.000000
0.000000
0.000000
0.000000
0.000000
0.000000
0.000000
0.000000
0.000000
0.000000
0.000000
0.000000
0.000000
0.000000
0.000000
0.000000
0.000000
0.000000
0.000000
0.000000
0.000000
0.000000
0.000000
0.000000
0.000000
0.000000
0.000000
0.000000
0.000000
0.000000
0.000000
0.000000
0.000000
0.000000
0.000000
0.000000
0.000000
0.000000
0.000000
0.000000
0.000000
0.000000
0.000000
0.000000
0.000000
0.000000
0.000000
0.000000
0.000000
0.000000
0.537001
0.540828
0.545030
0.549617
0.554601
0.559996
0.565816
0.572078
0.578799
0.585999
0.593697
0.601917
0.610683
0.620023
0.629965
0.640542
0.651788
0.663741
0.676441
0.689933
0.704266
0.719494
0.735674
0.752870
0.771150
0.790593
0.811280
0.833305
0.856768
0.881780
0.908466
0.936960
0.967416
1.000000
0.000000
0.000000
0.000000
0.000000
0.000000
0.000000
0.000000
0.000000
0.000000
0.000000
0.000000
0.000000
0.000000
0.000000
0.000000
0.000000
0.000000
0.000000
0.000000
0.000000
0.000000
0.000000
0.000000
0.000000
0.000000
0.000000
0.000000
0.000000
0.000000
0.000000
0.000000
0.000000
0.000000
0.000000
0.000000
0.000000
0.000000
0.000000
0.000000
0.000000
0.000000
0.000000
0.000000
0.000000
0.000000
0.000000