Минимальный объем вмещающего эллипсоида в MATLAB
У меня есть следующий набор данных. Цель состоит в том, чтобы минимизировать объем эллипсоида, который охватывает эти точки, используя CVX. Я сделал это, используя следующий код:
cvx_begin
variable A(n,n) symmetric
variable b(n)
maximize( det_rootn( A ) )
subject to
norms( A * x + b * ones( 1, m ), 2 ) <= 1;
cvx_end
clf
noangles = 200;
angles = linspace( 0, 2 * pi, noangles );
ellipse = A \ [ cos(angles) - b(1) ; sin(angles) - b(2) ];
plot( x(1,:), x(2,:), 'ro', ellipse(1,:), ellipse(2,:), 'b-' );
axis off
Но как я могу минимизировать объем эллипсоида, вмещающий пять баллов из заданных 20? Не просто случайные 5 баллов, а те, которые привели бы к эллипсису как можно меньше?
Моя идея состояла в том, чтобы рассчитать расстояние между центром эллипсоида до самой дальней точки и затем удалить его из набора данных. Затем восстановите новый многоточие и повторите. Шаг за шагом сузьте его до последних пяти пунктов.
Может кто-нибудь помочь с кодом или просто дать подсказку, как это можно сделать более плавно?
Спасибо!