子函数:
function P12=ceshi(x,lam0)
syms z
syms phim
f1=1575.52e6;
f2=1227.60e6;
j=0;
i=0;
vtec0=0;
Btgd=8e-9;
c=3e9;
N=3;
for n=0:N
j1=n;
j=j+j1;
end
l=j+N+1;
for n=0:N
i1=n;
i=i+i1;
pn=diff((z.^2-1).^n,z,n)/(2^n* factorial(n));
for k=0:n
pnk=(1-z.^2).^(k/2).*diff(pn,z,k);
vtec0=@(z,lam0)(x(i+k+1)*cos(k*lam0)+x(l+i+k+1)*sin(k*lam0)).*pnk+vtec0;
end
end
phim=[5 6 7 8 9 8 7 6 5 5];
z=sin(phim);
vtec=subs(vtec0);
P12=(40.28*vtec/f1^2+x(2*l+1)*c+Btgd*c)*(f1^2-f2^2)/f2^2;
command:
clc;
clear all
lam0=[5 6 7 8 9 8 7 6 5 5];
P12=[11 11 12 13 11 12 11 12 14 10];
x0=ones(1,2*10+1);
for h=1:100
[x,Resnorm]=lsqcurvefit(@ceshi,x0,lam0,P12);
x0=x;
end
x
运行,显示:
错误使用 lsqcurvefit (line 243)
LSQCURVEFIT requires all values returned by user functions to be of data type double.
出错 ceshi2 (line 7)
[x,Resnorm]=lsqcurvefit(@ceshi,x0,lam0,P12);
我试过用matlabFunction将函数转化为数值函数,还是不行。。。请大神帮我看看问题出在哪,谢谢。。。(参数都是随便设的)