Eigen最小二乘法擬合三次曲線

2021-07-10 13:35:49 字數 1279 閱讀 5278

用osg做了視覺化驗證,互動點都存在v3d中了,用了三次曲線作為曲線方程,即y= ax3 + bx2 + cx + d,以一組觀測值x,y序列去求未知數a,b,c,d,當然觀測個數必須大於4

#include

#include

#include

#include

#include "orthomanipulator.h"

#include

using namespace std;

using namespace eigen;

osg::ref_ptrroot = new osg::group;

osg::ref_ptrv3d = new osg::vec3darray;

osg::matrixd getvpw(osgviewer::view* view)

osg::vec3d pick(osgviewer::view* view, int winx, int winy)

class myguihandler : public osgga::guieventhandler

if(ea.geteventtype() == osgga::guieventadapter::keyup && ea.getkey() == osgga::guieventadapter::key_space)

vectorxf b(rows);

for(int i = 0 ; i < rows; i++)

vectorxf d =  a.jacobisvd(computethinu | computethinv).solve(b);

cout << "the least-squares solution is:\n"

<< d << endl;

osg::vec3darray* vv3 = new osg::vec3darray;

for(int i = 0; i < rows; i++)

osg::geometry* geom = new osg::geometry;

geom->setvertexarray(vv3);

geom->addprimitiveset(new osg::drawarrays(osg::drawarrays::line_strip, 0, vv3->size()));

osg::geode* geode = new osg::geode;

geode->adddrawable(geom);

root->addchild(geode);

}return false;}};

int main()

python最小二乘法擬合圓 最小二乘法擬合圓

有一系列的資料點 我們知道這些資料點近似的落在乙個圓上。依據這些資料預計這個圓的引數就是乙個非常有意義的問題。今天就來講講怎樣來做圓的擬合。圓擬合的方法有非常多種,最小二乘法屬於比較簡單的一種。今天就先將這樣的。我們知道圓方程能夠寫為 x?xc 2 y?yc 2 r2 通常的最小二乘擬合要求距離的平...

python最小二乘法擬合圓 最小二乘法擬合圓

有一系列的資料點 我們知道這些資料點近似的落在乙個圓上。依據這些資料預計這個圓的引數就是乙個非常有意義的問題。今天就來講講怎樣來做圓的擬合。圓擬合的方法有非常多種,最小二乘法屬於比較簡單的一種。今天就先將這樣的。我們知道圓方程能夠寫為 x?xc 2 y?yc 2 r2 通常的最小二乘擬合要求距離的平...

最小二乘法 直線擬合

功能描述 利用最小二乘法求斜率 xytopx 截距 方法1 xytopy 斜率 ncount 點數 void min2method double xytopy,double xytopx,int x,int y,int ncount graphics.drawline pen,point x i y...