2016-08-20 3 views
0

У меня есть несколько кругов точек, и я хочу найти радиус наилучшего подходящего круга с центром, зафиксированным в начале координат.Лучший подходящий круг с центром фиксации в MATLAB

CircFit не позволяет указать центр в явном виде, и мне нужно его зафиксировать в начале координат.

+0

Я просто попытался с помощью CircFit и это не позволяет мне зафиксировать центр. Есть ли какая-либо другая функция, доступная в MATLAB, которая позволит мне это сделать? –

+0

Простым решением было бы взять среднее расстояние до каждой точки от центра, чтобы приблизить радиус круга. Что вы имеете в виду, лучше всего подходят? – jodag

+0

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

ответ

1

Опубликовать ответ с комментариями.

Расстояние от точки до ближайшей точки на круге составляет sqrt((x-xc).^2 + (y-yc).^2) - r).^2. Функция ошибки для оптимальных наименьших квадратов равна err = sum((sqrt((x-xc).^2 + (y-yc).^2) - r).^2).

Вычисляя производную err относительно r и установив его равным нулю, то решение для r дает решение r = mean(sqrt((x - xc).^2 + (y - yc).^2)).

В функции MATLAB это может быть записано как

function r = circfitFixedC(x,y,xc,xy) 
    r = mean(sqrt((x - xc).^2 + (y - xy).^2)); 
Смежные вопросы