已知10组数,如何用matlab构建出相应的函数。

来源:百度知道 编辑:UC知道 时间:2024/05/10 04:42:19
假设已经知道4组数在一个TXT文本文件里面,数据如下
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