雪糕冰棍矿泉水 雪糕冰棍矿泉水
关注数: 51 粉丝数: 150 发帖数: 3,258 关注贴吧数: 13
求助(算法) 帮宿舍舍友仿真智能车的东西,他说是晶体定标以后看数据是不是线性的,(y)是线性的就可以用。第一种算法是最简单,x确定后,y=0.1/(x^2+0.01),再取均值。我写了下代码。 clc x1=-0.36:0.001:0.12; x2=-0.3:0.001:0.18; x3=-0.24:0.001:0.24; x4=-0.18:0.001:0.3; x5=-0.12:0.001:0.36; y1=0.1./(x1.^2+0.01); y2=0.1./(x2.^2+0.01); y3=0.1./(x3.^2+0.01); y4=0.1./(x4.^2+0.01); y5=0.1./(x5.^2+0.01); y=(-0.12.*y1+(-0.06.*y2)+0.*y3+0.06.*y4+0.12*y5) plot(x1,y) 这种算法最简单,但可见不是线性的,不稳定,于是采用另一种算法y的算法和第一种算法中一样,再用y求系数a,b,c,d,然后带入解一阶导数的方程3ax^2+2bx+c=0,求出两个极点的横坐标,带入ax^3+bx^2+cx+d=f(x),求出两个f(x)中较大的,其对应的x就是极点坐标。然后绘制这些坐标x的曲线,观察是否线性。在下新手,不知道这种求极点的方法对不对,附上自己写的一段代码(出来的结果不对,但不明白问题在哪),望指点! clc x=[1000 100 10 1;125 25 5 1;-125 25 -5 1;-1000 100 -10 1]; x1=-0.15; x2=-0.1; x3=0; x4=0.05; z=[]; for k=1:200 y1=0.1/(x1^2+0.01); y2=0.1/(x2^2+0.01); y3=0.1/(x3^2+0.01); y4=0.1/(x4^2+0.01); y=[y1;y2;y3;y4]; a=inv(x)*y; p=[3*a(1) 2*a(2) a(3)]; r=roots(p); fx=a(1)*(r.^3)+a(2)*(r.^2)+a(3)*(r)+a(4); if fx(1)>fx(2) rm=r(1); else rm=r(2); end z=[z rm]; x1=x1+(0.2/200); x2=x2+(0.2/200); x3=x3+(0.2/200); x4=x4+(0.2/200); end t=0:0.001:0.2-0.001; figure(1) plot(t,z),grid on
首页 1 2 下一页