Подгонка плоскости 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
, Надеюсь, что это поможет вам и с будущими документами.