我有一个2维的椭圆,由正定矩阵X定义如下:如果x'* X * x < = 1,则点x在椭圆中。我在matlab中绘制这个椭圆?我做了一些搜索,同时发现很少。在矩阵形式给出的MATLAB中绘制一个椭圆
想通了其实答案:我会发布这作为一个答案,但它不会让我(新用户):
想通了一点修修补补之后。基本上,我们将椭圆边界(x'* X * x = 1)上的点表示为X的特征向量的加权组合,这使得一些数学计算更容易找到点。我们可以写(au + bv)'X(au + bv)= 1并计算a,b之间的关系。 Matlab代码如下(抱歉,这是混乱的,只是用,我用笔/纸相同的符号):我碰到这个岗位绊倒而寻找这个话题
function plot_ellipse(X, varargin)
% Plots an ellipse of the form x'*X*x <= 1
% plot vectors of the form a*u + b*v where u,v are eigenvectors of X
[V,D] = eig(X);
u = V(:,1);
v = V(:,2);
l1 = D(1,1);
l2 = D(2,2);
pts = [];
delta = .1;
for alpha = -1/sqrt(l1)-delta:delta:1/sqrt(l1)+delta
beta = sqrt((1 - alpha^2 * l1)/l2);
pts(:,end+1) = alpha*u + beta*v;
end
for alpha = 1/sqrt(l1)+delta:-delta:-1/sqrt(l1)-delta
beta = -sqrt((1 - alpha^2 * l1)/l2);
pts(:,end+1) = alpha*u + beta*v;
end
plot(pts(1,:), pts(2,:), varargin{:})
我明白了,但它不会让我发表答案。如果我记得的话,我明天就会发布它 – John 2013-04-10 01:59:26