我从XYZ形式的光学运动捕捉系统中获得了N个3D观测。 捕获的运动只是一个简单的圆弧,源自具有固定旋转轴的刚体。 我在matlab中使用了princomp函数来获取同一平面上的所有标记点,即运动已完成的平面。
(参见下面找到的飞机上代表3D数据的图片)
在上一步之后我想要做的是查看找到的平面上的拟合数据,并在2D中获取捕获的运动的曲线。 在princomp如何,据说
主成分得分的前两个坐标给出了 在坐标系中将每个点投影到平面上 飞机。
(来自“使用主成分分析进行正交回归”在mathworks帮助网站上的文章)
所以我认为如果我只是绘制那些PC得分-plot(得分(:,1),得分(:,2)) - 我将得到运动曲线。相反,我得到的就是这个。
(参见下面从pc得分得到的2D曲线数据的图片)
2d曲线似乎是拉伸和非线性的(相同x值的y值不同),它不应该是。我正在寻找的曲线应该通过在matlab中使用简单多项式(polyfit)或圆拟合来插值。 这是否发生是因为发现的平面相对于原始坐标系看起来像菱形,并且pc轴相对于平面的基础旋转,从而产生这种拉伸?
然后我认为,这是因为光学系统和Matlab的坐标系不同而发生的。光学系统(即相机)co.sys。是面向XZY和Matlab的默认(我认为)co.sys是面向XYZ的。我通过旋转矩阵将我的数据转换为与Matlab的co.sys相对应,再次运行princomp但是我在2D曲线中获得了相同的拉伸(新曲线现在具有不同的方向)。
我读到的其他地方
主成分分析选择第一个PCA轴作为该线 穿过质心,但也最小化了方形 每个点到该线的距离。因此,从某种意义上说,这条线是 尽可能接近所有数据。同样,这条线路也是如此 通过数据的最大变化。第二个PCA轴也 必须经过质心,并且还要经过最大值 数据的变化,但有一定的约束:它必须是 与PCA完全不相关(即以直角或“正交”) 轴1。
我知道我错过了一些东西,但我有一个问题,理解为什么我得到拉伸的曲线。我必须这样做,我可以得到正确的曲线吗?
提前致谢。
编辑:这是一个示例数据文件(3列XYZ坐标,用于2个标记) w w w.sendspace.com/file/2hiezc