Curve-to-curve fitting trouble!

1. Jul 31, 2008

villiami

I'm currently working on a matlab program which, given two sets of data each representing curves, will transform (through rotations about the origin and x-y shifts) the first curve so it fits the second one best (so far in terms of sum of squares).

I have been able to create a program calculating vertical distance between the two curves, but because my curves double back on themselves I don't think this will really work.

Does anyone know how this might be done (in matlab or another language)? Or even just what this type of problem is called (I tried "Curve fitting", but this seems to only refer to point-to-curve fitting)

Will

2. Jul 31, 2008

Staff: Mentor

Is each set of data paired with the other or is there some parameterization that relates a given point on one curve with a unique point on the other?

3. Jul 31, 2008

villiami

The data is not paired, i.e. one set might be for x-values 10,20,30,40,50 and the other at 11,17,31.46,...etc
In the first version I used spline interpolation when I needed to compare points/curves.
(note these are not actually the data points!)
Thanks

4. Jul 31, 2008

Staff: Mentor

OK, if the data is not paired then this may be very slow depending on the size of your data. I think the operation I am going to suggest is O(N²).

For each data point A in the first set calculate the squared distance (x²+y²) with each data point B in the second set. The minimum distance is the distance of point A from set B. Sum that over all points in A to get a total distance measure. Minimize that distance measure.

By the way, this seems like it is a kind of registration problem, which is a type of optimization problem. There are probably people who have solved this much more efficiently than what I am suggesting.

5. Aug 1, 2008

Ben Niehoff

Do the functions fit within some sort of boundary box or circle? It seems to me that what you want to minimize is the absolute area between the two curves; however, I'm not sure how well-defined that is.

Are the curves finite? If so, one could define the area by drawing lines between the endpoints of the curves. Still, I'm not sure exactly how to calculate the area in order to minimize it.

6. Aug 3, 2008

villiami

Thanks for the responses, I think I've solved it (partially) by rotating the parts of the curves so the don't double back on themselves. Works well so I'm happy with it!