我有一个20点的数据集,我需要将其包含在一个椭圆中。我正在尝试计算椭圆中心与去除最远点之间的最大距离,重建一个新的椭圆并重复该过程。循环优化
下面是代码:
P = [1.397100 0.934550
-0.708828 -3.993403
-0.775017 -0.167091
1.861729 -0.334958
-0.376357 -3.187580
0.294908 -0.765351
0.952188 -1.872313
0.524652 2.972442
0.889532 -0.331162
0.991093 0.278271
0.262071 0.078590
0.901017 0.320209
-0.797258 0.518452
-0.656796 0.268351
0.333667 0.601893
0.762157 0.613208
0.292147 -1.555187
0.122875 -0.860661
0.702863 -3.195442
-1.140430 -1.919686]'
t = 0.001;
K = convhulln(P');
K = unique(K(:));
Q = P(:,K);
[A , C] = MinVolEllipse(Q, t)
figure
plot(P(1,:),P(2,:),'*')
hold on
Ellipse_plot(A,C)
%Rule=size(P',1)
W=P'
v=C'
Cx=v(1)
Cy=v(2)
dist=sqrt((W(:,1)-Cx).^2+(W(:,2)-Cy).^2)
Remove=find(dist==max(dist(:)))
W(Remove,:)=[]
W=W'
Rule=size(W',1)
while Rule>5
W=W';
v=C';
Cx=v(1);
Cy=v(2);
dist=sqrt((W(:,1)-Cx).^2+(W(:,2)-Cy).^2);
Remove=find(dist==max(dist(:)));
W(Remove,:)=[];
W=W';
end
[A , C] = MinVolEllipse(W, t)
figure
plot(W(1,:),W(2,:),'*')
hold on
Ellipse_plot(A,C)
我知道我做错了什么事,但现在我坚持用“忙”约10分钟。如何正确循环过程?
谢谢!
你为什么老是一遍又一遍地调换的事情?例如。 'W = W';'? –