我想在MATLAB中重现下图:
有两类具有X和Y坐标的点 . 我想用一个带有一个标准偏差参数的椭圆围绕每个类,它决定了椭圆沿轴线走多远 .
这个图是用另一个软件创建的,我不太清楚它是如何计算椭圆的 .
这是我用于此图的数据 . 第1列是第2列 - 第X列,第3列 - 第Y列 . 我可以使用 gscatter
来绘制点本身 .
A = [
0 0.89287 1.54987
0 0.69933 1.81970
0 0.84022 1.28598
0 0.79523 1.16012
0 0.61266 1.12835
0 0.39950 0.37942
0 0.54807 1.66173
0 0.50882 1.43175
0 0.68840 1.58589
0 0.59572 1.29311
1 1.00787 1.09905
1 1.23724 0.98834
1 1.02175 0.67245
1 0.88458 0.36003
1 0.66582 1.22097
1 1.24408 0.59735
1 1.03421 0.88595
1 1.66279 0.84183
];
gscatter(A(:,2),A(:,3),A(:,1))
仅供参考,here是关于如何绘制椭圆的问题 . 所以,我们只需知道绘制它的所有参数 .
Update:
我同意可以将中心计算为X和Y坐标的平均值 . 可能我必须对每个类使用主成分分析( PRINCOMP
)来确定角度和形状 . 仍然在想...
3 回答
考虑一下代码:
编辑
如果您希望椭圆表示特定的标准偏差水平,那么正确的做法是缩放协方差矩阵:
我尝试以下方法:
计算椭圆中心的x-y质心(linked question中的x,y)
计算线性回归拟合线以获得椭圆长轴的方向(角度)
计算x和y轴的标准偏差
翻译x-y标准偏差,使它们与拟合线(a,b)正交
我假设在单个矩阵中只给出一组点,例如
您可以为每个数据集重现此过程 .
计算椭球的中心,这是点的平均值 . Matlab功能:
mean
居中数据 . Matlab函数
bsxfun
计算椭圆体的主轴及其各自的大小 . Matlab功能:
eig
后续步骤如下所示:
AX的列包含描述椭圆体主轴的向量,而MAG的对角线包含有关其大小的信息 . 要绘制椭圆体,请使用其大小的平方根缩放每个主轴 .
希望这可以帮助 .
一个 .