저는 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