Мне нужно найти отклонения в плоскости на 10% и создать новую плоскость без этих отклонений.
Я попытался суммировать все точки (точки) плоскости, а затем разделить их на количество точек, чтобы получить среднее значение, а затем убрать все отклоняющиеся точки. Проблема в том, что я не знаю, как ограничить отклонение до 10% от точек моего самолета.
function result = myFun(x, xPoints, yPoints, zPoints)
A = x(1);
B = x(2);
C = x(3);
D = x(4);
fc = sum(sum((A*xPoints + B*yPoints + C*zPoints + D).^2));
nNorm= sqrt(A*A + B*B + C*C);
og(1)= 1 - nNorm;
og(2)= nNorm - 1;
R = 10^6;
fk = ((og(1) + abs(og(1)))/2)^2 + ((og(2) + abs(og(2)))/2)^2;
result = fc + R*fk;
clc;
clear;
A = -0.316017;
B = 0.0634858;
C = -0.946627;
D = 554.238;
% A = 0;
% B = 0;
% C = -1;
% D = 0;
[xPoints, yPoints] = meshgrid(-100:10:100, -100:10:100);
noise = 5*randn(size(xPoints));
zPoints = (-A*xPoints - B*yPoints - D) / C + noise;
surf(xPoints, yPoints, zPoints)
funID = @(x)myFun(x, xPoints, yPoints, zPoints);
bestPlane = fminsearch(funID, [A B C D])