Подгонка плоскости Matlab - невозможно получить среднеквадратическую ошибку

Мне нужно найти среднеквадратичную ошибку плоскости, подходящей для набора трехмерных точек. Я использую функцию pcfitplane, но в результате получаю массив индексов.

Мой код:

% Create the point cloud object
% XYZ is a N by 3 matrix containing the points
ptCloud = pointCloud(XYZ);
[~,rmse] = pcfitplane(ptCloud,maxDistance);

% rmse is a 1 by N array, and the values are also from 1 to N! 

Что мне здесь не хватает? Как я могу получить ошибку RMS правильно?

1 ответ

Решение

Вы неправильно интерпретируете документы. Вот как показаны прототипы:

[model,inlierIndices,outlierIndices] = pcfitplane(ptCloudIn,maxDistance)
[___,rmse] = pcfitplane(ptCloudIn,maxDistance)
[___] = pcfitplane(ptCloudIn,maxDistance,Name,Value)

Длинное тройное подчеркивание означает "все выходные аргументы из приведенных выше синтаксисов", а не "один аргумент". Как вы правильно заметили, вы получаете inlierIndices назад. Вы пытаетесь сделать что-то вроде этого:

[~,~,~,rmse] = pcfitplane(ptCloud,maxDistance);

Три тильды - это длинное подчеркивание. Они представляют model,inlierIndices,outlierIndices, Надеюсь, что это поможет вам и с будущими документами.

Другие вопросы по тегам