已知10组数,如何用matlab构建出相应的函数。
来源:百度知道 编辑:UC知道 时间:2024/05/10 04:42:19
X1 Y1 X2 Y2
32.22233 100.32232 33.87672 101.23211
31.21321 101.32122 32.23223 102.23321
30.31213 100.32132 29.03212 100.27829
33.32432 101.43242 32.34236 100.63452
如何用matlab构建出相应的函数,及得到a和b?函数模型如下:
X2=b+X1*Cos(X1-X0)*Sin(Y1-Y0)+X1
Y2=a+Y1*Sin(X1-X0)*Cos(Y1-Y0)+Y1
其中X0和Y0为常数,例如X0=100, Y0=30
请给出具体代码,谢谢
只给了4组,误差较大,但原理一样。
A=[...
32.22233 100.32232 33.87672 101.23211
31.21321 101.32122 32.23223 102.23321
30.31213 100.32132 29.03212 100.27829
33.32432 101.43242 32.34236 100.63452];
X1=A(:,1), Y1=A(:,2),X2=A(:,3), Y2=A(:,4)
funX2=inline('b(1)+x(:,1).*cos(x(:,1)-b(2)).*sin(x(:,2)-b(3))+x(:,1)','b','x') %x(1)=X1,x(2)=Y1
funY2=inline('a+y(:,1).*sin(y(:,2)-100).*cos(y(:,1)-30)+y(:,1)','a','y') %y(1)=Y1,y(2)=X1
b=nlinfit([X1 Y1],X2,funX2,[1 100 30])
a=nlinfit([Y1 X1],Y2,funY2,1)
XX2=b(1)+X1.*cos(X1-b(2)).*sin(Y1-b(3))+X1 %calculated value
YY2=a+Y1.*sin(X1-100).*cos(Y1-30)+Y1
error1=(X2-XX2)./X2
error2=(Y2-YY2)./Y2
结果:
b =
-8.5492 100.4148 29.1386
a =
12.3859
XX2 =
40.7660
24.9628
36.4362
25.3185
YY2 =
147.4116