{"id":112,"date":"2021-08-30T22:23:06","date_gmt":"2021-08-30T14:23:06","guid":{"rendered":"http:\/\/139.224.63.49\/?p=112"},"modified":"2021-08-30T22:23:06","modified_gmt":"2021-08-30T14:23:06","slug":"eigen%e4%b8%adsplinefitting%e5%be%97%e5%88%b0%e7%9a%84%e9%83%bd%e6%98%afnan","status":"publish","type":"post","link":"http:\/\/iamnear.top\/?p=112","title":{"rendered":"eigen\u4e2dSplineFitting\u5f97\u5230\u7684\u90fd\u662fnan"},"content":{"rendered":"\n<p>\u4eca\u5929\u6253\u7b97\u7528b\u6837\u6761\u66f2\u7ebf\u6765\u5bf9\u4e00\u4e9b\u70b9\u4e91\u6570\u636e\u505a\u5e73\u6ed1\u64cd\u4f5c\u3002\u4f7f\u7528\u7684\u662fegien\u5e93\u4e2d\u7684SplineFitting\u7c7b\u548cSpline\u7c7b\u3002<\/p>\n\n\n\n<p>\u8fd9\u4e24\u4e2a\u7c7b\u7684\u6587\u6863\u89c1\uff1a<a href=\"http:\/\/eigen.tuxfamily.org\/dox-devel\/unsupported\/structEigen_1_1SplineFitting.html\">http:\/\/eigen.tuxfamily.org\/dox-devel\/unsupported\/structEigen_1_1SplineFitting.html<\/a><\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>void do_spline_smooth(vector&lt;PointXYZ>&amp; data)\n{\n\tEigen::Matrix3Xf m;\n\tm.resize(3, data.size());\n\tfor (int i = 0; i &lt; data.size(); i++)\n\t{\n\t\tm(0, i) = data&#91;i].x;\n\t\tm(1, i) = data&#91;i].y;\n\t\tm(2, i) = data&#91;i].z;\n\t}\n\tEigen::Spline3f s = Eigen::SplineFitting&lt;Eigen::Spline3f>::Interpolate(m, 7);\n\tdata.clear();\n\tfor (float i = 0; i &lt;= 1; i += 1. \/ 200)\n\t{\n\t\tauto d = s(i);\n\t\tdata.emplace_back(d&#91;0], d&#91;1], d&#91;2]);\n\t}\n}<\/code><\/pre>\n\n\n\n<p>\u4ee3\u7801\u5982\u4e0a\uff0c\u5c31\u662f\u628a\u4e00\u7ec4\u70b9\u901a\u8fc7b\u6837\u6761\u62df\u5408\u518d\u91cd\u91c7\u6837\u3002\u4f46\u662f\u7b2c\u4e00\u6b21\u7528\u7684\u65f6\u5019\u9047\u5230\u4e86\u4e2a\u95ee\u9898\uff0c\u5c31\u662f\u5f97\u5230\u7684\u6570\u636e\u90fd\u662ffloat\u7c7b\u578b\u7684nan\uff08not a number)\u3002\u8fd9\u91cc\u6211\u7684\u8f93\u5165\u7684\u70b9\u4e91\u6570\u503c\u8303\u56f4\u5927\u6982\u5728(950,500,500)\u5de6\u53f3<\/p>\n\n\n\n<p>\u7ecf\u8fc7\u4e00\u4e0b\u5348\u52a0\u4e0a\u665a\u4e0a\u7684\u8c03\u8bd5\uff0c\u6211\u7ec8\u4e8e\u660e\u767d\u662f\u56e0\u4e3aeigen\u5728 Eigen::SplineFitting&lt;Eigen::Spline3f>::Interpolate \u8fd9\u4e2a\u51fd\u6570\u4e2d\uff0c\u7531\u5982\u4e0b\u4e00\u6bb5\u4ee3\u7801<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>    HouseholderQR&lt;MatrixType> qr(A);\n\n    \/\/ Here, we are creating a temporary due to an Eigen issue.\n    ControlPointVectorType ctrls = qr.solve(MatrixType(pts.transpose())).transpose();<\/code><\/pre>\n\n\n\n<p>\u95ee\u9898\u5c31\u51fa\u5728\u8fd9\u4e2a HouseholderQR \u7c7b\u4e2d\u3002\u6839\u636e\u6211\u7684\u8c03\u8bd5\uff0c qr.solve \u8fd4\u56de\u7684\u7ed3\u679c\u4e2d\u5c31\u51fa\u73b0\u4e86\u5f88\u591anan\u3002<\/p>\n\n\n\n<p>\u67e5\u627e\u8fd9\u4e2a\u7c7b\u7684\u6587\u6863\uff0chttp:\/\/eigen.tuxfamily.org\/dox\/classEigen_1_1HouseholderQR.html\uff0c\u53d1\u73b0\uff0c\u6709\u5982\u4e0b\u8fd9\u6837\u4e00\u6bb5\u8bdd\uff1a<\/p>\n\n\n\n<figure class=\"wp-block-pullquote\"><blockquote><p>This Householder QR decomposition is faster, but less numerically stable and less feature-full than <a href=\"http:\/\/eigen.tuxfamily.org\/dox\/classEigen_1_1FullPivHouseholderQR.html\">FullPivHouseholderQR<\/a> or <a href=\"http:\/\/eigen.tuxfamily.org\/dox\/classEigen_1_1ColPivHouseholderQR.html\">ColPivHouseholderQR<\/a>.<\/p><\/blockquote><\/figure>\n\n\n\n<p>\u6240\u4ee5\u6211\u6000\u7591\u662f\u4e0d\u662f\u56e0\u4e3a\u8fd9\u4e2a\u65b9\u6cd5\u7684\u6570\u503c\u7a33\u5b9a\u6027\u4e0d\u591f\uff0c\u5bfc\u81f4\u51fa\u73b0\u5927\u91cfnan\u3002\u6211\u6539\u7528\u4e86FullPibHouseholderQR\uff0c\u679c\u7136\u53ef\u4ee5\u4e86\u3002\u770b\u6765\u5c31\u662f\u6570\u503c\u7a33\u5b9a\u6027\u7684\u95ee\u9898\u3002 <\/p>\n\n\n\n<p>\u6839\u636e\u5b98\u7f51\u7684\u4ecb\u7ecd\uff0c\u8fd9\u4e09\u79cdQR\u7684\u65b9\u6cd5\uff0c\u901f\u5ea6\u4e0a HouseholderQR >ColPivHouseholderQR>FullPivHouseholderQR,\u6570\u503c\u7a33\u5b9a\u6027\u5219\u53cd\u4e4b\u3002<\/p>\n\n\n\n<p>\u8003\u8651\u5230\u6570\u503c\u7a33\u5b9a\u6027\u4e5f\u548c\u6570\u503c\u8303\u56f4\u6709\u5173\uff0c\u6211\u5c06\u8f93\u5165\u6570\u636e\u90fd\u9664\u4ee5\u4e861000\uff0c\u518d\u4f7f\u7528HouseholderQR\uff0c\u679c\u7136\u4e5f\u6ca1\u51fa\u73b0nan\u7684\u72b6\u51b5\u4e86\u3002<\/p>\n","protected":false},"excerpt":{"rendered":"<p>\u4eca\u5929\u6253\u7b97\u7528b\u6837\u6761\u66f2\u7ebf\u6765\u5bf9\u4e00\u4e9b\u70b9\u4e91\u6570\u636e\u505a\u5e73\u6ed1\u64cd\u4f5c\u3002\u4f7f\u7528\u7684\u662fegien\u5e93\u4e2d\u7684SplineFitting\u7c7b&hellip; <a href=\"http:\/\/iamnear.top\/?p=112\" class=\"more-link read-more\" rel=\"bookmark\">\u7ee7\u7eed\u9605\u8bfb <span class=\"screen-reader-text\">eigen\u4e2dSplineFitting\u5f97\u5230\u7684\u90fd\u662fnan<\/span><i class=\"fa fa-arrow-right\"><\/i><\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[4],"tags":[],"class_list":{"0":"post-112","1":"post","2":"type-post","3":"status-publish","4":"format-standard","5":"hentry","6":"category-c_plus_plus","7":"h-entry","9":"h-as-article"},"_links":{"self":[{"href":"http:\/\/iamnear.top\/index.php?rest_route=\/wp\/v2\/posts\/112","targetHints":{"allow":["GET"]}}],"collection":[{"href":"http:\/\/iamnear.top\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"http:\/\/iamnear.top\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"http:\/\/iamnear.top\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"http:\/\/iamnear.top\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=112"}],"version-history":[{"count":1,"href":"http:\/\/iamnear.top\/index.php?rest_route=\/wp\/v2\/posts\/112\/revisions"}],"predecessor-version":[{"id":113,"href":"http:\/\/iamnear.top\/index.php?rest_route=\/wp\/v2\/posts\/112\/revisions\/113"}],"wp:attachment":[{"href":"http:\/\/iamnear.top\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=112"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/iamnear.top\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=112"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/iamnear.top\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=112"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}