请大神指教 现在用lsqnonlin进行拟合 拟合的对象是一个状态空间方程 如下所示 目标是求解A B阵
x'=[a1 a2;a3 a4]x+[a5;a6]*Wf
y=[1 0;0 1]x
其中x=[n1;n2];u=Wf;y=[n1;n2]
程序如下:
首先是调用函数:SVMnihefa.m
%状态变量拟合法调用函数
function E=SVMnihefa(a,t,n1,n2,Wf)
a1=a(1);
a2=a(2);
a3=a(3);
a4=a(4);
a5=a(5);
a6=a(6);
t=t(:);
n1=n1(:);
n2=n2(:);
Y1=Y1(:);
Y2=Y2(:);
diff('Y1','t')=a1*Y1+a2*n2+a5*Wf;
diff('Y2','t')=a3*n1+a4*Y2+a6*Wf;
Y=[Y1;Y2];
E=y-Y;
然后是主函数:SVMnihefamain.m
%状态变量拟合法主函数
t=[0.1 0.3 0.5 0.7 0.9 1.1 1.4 1.7 2 3];
n1=[2.6 7.3 10.9 13.5 15.3 16.6 18 18.9 19.5 20.3];
n2=[3.7 8.3 10.7 12.2 13.1 13.7 14.3 14.6 14.8 15.1];
Wf=0.0332;
a0=[1 1 1 1 1 1];
[x,fval,norm,ef,res,output]=lsqnonlin(@SVMnihefa,a0,[],[],[],t,n1,n2,Wf)
现在运行主函数,报错如下:
Undefined function or variable 'Y1'.
Error in SVMnihefa (line 12)
Y1=Y1(:);
Error in lsqnonlin (line 194)
initVals.F = feval(funfcn{3},xCurrent,varargin{:});
Error in SVMnihefaMain (line 7)
[x,fval,norm,ef,res,output]=lsqnonlin(@SVMnihefa,a0,[],[],[],t,n1,n2,Wf)
Caused by:
Failure in initial user-supplied objective function evaluation. LSQNONLIN cannot continue.
我觉得主要问题就是我在调用函数SVMnihefa.m里写的那两个方程有问题,即
diff('Y1','t')=a1*Y1+a2*n2+a5*Wf;
diff('Y2','t')=a3*n1+a4*Y2+a6*Wf;
实在是不清楚这两句应该怎么写。
请问大神应该怎么改?搞了两天了 总是报错 不知道问题在哪里 请大神指教 感激不尽!
x'=[a1 a2;a3 a4]x+[a5;a6]*Wf
y=[1 0;0 1]x
其中x=[n1;n2];u=Wf;y=[n1;n2]
程序如下:
首先是调用函数:SVMnihefa.m
%状态变量拟合法调用函数
function E=SVMnihefa(a,t,n1,n2,Wf)
a1=a(1);
a2=a(2);
a3=a(3);
a4=a(4);
a5=a(5);
a6=a(6);
t=t(:);
n1=n1(:);
n2=n2(:);
Y1=Y1(:);
Y2=Y2(:);
diff('Y1','t')=a1*Y1+a2*n2+a5*Wf;
diff('Y2','t')=a3*n1+a4*Y2+a6*Wf;
Y=[Y1;Y2];
E=y-Y;
然后是主函数:SVMnihefamain.m
%状态变量拟合法主函数
t=[0.1 0.3 0.5 0.7 0.9 1.1 1.4 1.7 2 3];
n1=[2.6 7.3 10.9 13.5 15.3 16.6 18 18.9 19.5 20.3];
n2=[3.7 8.3 10.7 12.2 13.1 13.7 14.3 14.6 14.8 15.1];
Wf=0.0332;
a0=[1 1 1 1 1 1];
[x,fval,norm,ef,res,output]=lsqnonlin(@SVMnihefa,a0,[],[],[],t,n1,n2,Wf)
现在运行主函数,报错如下:
Undefined function or variable 'Y1'.
Error in SVMnihefa (line 12)
Y1=Y1(:);
Error in lsqnonlin (line 194)
initVals.F = feval(funfcn{3},xCurrent,varargin{:});
Error in SVMnihefaMain (line 7)
[x,fval,norm,ef,res,output]=lsqnonlin(@SVMnihefa,a0,[],[],[],t,n1,n2,Wf)
Caused by:
Failure in initial user-supplied objective function evaluation. LSQNONLIN cannot continue.
我觉得主要问题就是我在调用函数SVMnihefa.m里写的那两个方程有问题,即
diff('Y1','t')=a1*Y1+a2*n2+a5*Wf;
diff('Y2','t')=a3*n1+a4*Y2+a6*Wf;
实在是不清楚这两句应该怎么写。
请问大神应该怎么改?搞了两天了 总是报错 不知道问题在哪里 请大神指教 感激不尽!