matlab中的pca - 2D曲线拉伸

时间:2013-03-19 19:53:51

标签: matlab 2d pca

我从XYZ形式的光学运动捕捉系统中获得了N个3D观测。 捕获的运动只是一个简单的圆弧,源自具有固定旋转轴的刚体。 我在matlab中使用了princomp函数来获取同一平面上的所有标记点,即运动已完成的平面。

(参见下面找到的飞机上代表3D数据的图片)

http://i.imgur.com/ea9Pz20.png

在上一步之后我想要做的是查看找到的平面上的拟合数据,并在2D中获取捕获的运动的曲线。 在princomp如何,据说

  

主成分得分的前两个坐标给出了   在坐标系中将每个点投影到平面上   飞机。

(来自“使用主成分分析进行正交回归”在mathworks帮助网站上的文章)

所以我认为如果我只是绘制那些PC得分-plot(得分(:,1),得分(:,2)) - 我将得到运动曲线。相反,我得到的就是这个。

(参见下面从pc得分得到的2D曲线数据的图片)

enter image description here

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

0 个答案:

没有答案