Learn R Programming

circular (version 0.3-1)

lsfit.circle: Fit a 2D circle to an (x,y) dataset

Description

Fit a 2D circle to an (x,y) dataset using LS.

Usage

lsfit.circle(x, y, init = NULL, units = c("radians", "degrees"),
template = c("none", "geographics"),
modulo = c("asis", "2pi", "pi"), zero = 0, rotation = c("counter", "clock"), ...)
## S3 method for class 'lsfit.circle':
print(x, digits = max(3, getOption("digits") - 3), ...)

Arguments

x
either a matrix with two columns or a vector.
y
if x is a vector then y must be a vector with the same length.
init
initial values of the parameters. A vector of length 3 with the following components: radius of the circle, x-coordinate of the center, y-coordinate of the center. If NULL the vector is set to c(max(c(abs(x-mean(x)), abs(y-mean
units
the units used in defining the angles between observations and the center of the circle. See circular.
template
the template used in defining the angles between observations and the center of the circle. See circular.
modulo
the modulo used in defining the angles between observations and the center of the circle. See circular.
zero
the zero used in defining the angles between observations and the center of the circle. See circular.
rotation
the rotation used in defining the angles between observations and the center of the circle. See circular.
...
further parameters passed to the optim function.
digits
the number of digits to be printed.

Value

  • An object of class lsfit.circle.
  • coefficientsa vector of length 3 with the estimated radius and coordinate of the center of the fitted circle.
  • xthe x-coordinate.
  • ythe y-coordinate.
  • x.centeredthe x-coordinate re-centered at the center of the circle.
  • y.centeredthe y-coordinate re-centered at the center of the circle.
  • anglesangles of the observations with respect to the center coordinate.
  • radiusthe distance between the observations and the center coordinate
  • convergencevalue from the function optim.
  • optimthe output from the function optim.
  • callmatch.call().

Details

lsfit.circle uses the optim function to minimize the sum of the squared residuals between the observations and the optimally fitting circle.

References

Coope, I. (1993). Circle fitting by linear and non-linear least squares. Journal of Optimization Theory and Applications, 76, 381-388.

Examples

Run this code
data(coope)
res <- lsfit.circle(x=x.coope, y=y.coope)
res

plot(res)

par(mfcol=c(1,2))
plot(res$angles)
hist(res$radius)

windrose(x=res$angles, y=res$radius)

Run the code above in your browser using DataLab