У меня есть эллипс в 2 размерах, определяемый положительно определенной матрицей X следующим образом: точка x находится в эллипсе, если x '* X * x < = 1. Как можно Я рисую этот эллипс в 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