Najlepsza płaszczyzna dopasowania dla danych 3D

Mam swoje dane 3D X, Y, Z (macierze o rozmiarze NxM)

Chcę dopasować go do płaszczyzny najlepszego dopasowania, co zrobiłem:

X = X(isfinite(X));% deleting the NaN because svd Doesn't accept them
Y = Y(isfinite(Y));
Z = Z(isfinite(Z));

G = [X,Y,Z,ones(size(X(:)))];
[u s v] = svd(G,0);
P = v(:,4);
scalar = 2*P./P(1);
P = P./scalar; % supposed to be my plane equation but there is something wrong

a następnie ponownie oblicz Z z X i Y

Z = -(P(1)*X + P(2)*Y + P(4)) / P(3);

Nie wiem, na czym polega problem !!

questionAnswers(1)

yourAnswerToTheQuestion