I’m looking for a package or an algorithm, alternatively an explanation of why what I want is impossible or bad:

I have a set of data `x1, y1 ≈ f.(x1)`

and one `x2, y2 ≈ a*f.(x2) .+ b`

for some natural black box function `f`

and constants `a, b`

. I would like to merge these two datasets by scaling and shifting `y2`

, essentially finding `a`

and `b`

. The physical motivation is, for instance, spectrometry of the same features using different integration times.

If enough of `x2`

has “close neighbors” in `x1`

, this is easy to do decently manually, but I find surprisingly little information on automating the process. My current approach is to minimize wrt `p`

the sum over each possible pair of points `(x1[i], y1[i]), (x2[j], y2[j])`

of the error function

```
(p[1]*y2+p[2] - y1)^2/(1 + (x2 - x1)^2/w^2)
```

where the points are weighted by the lorentzian `1/(1 + Δx^2/w^2)`

of width `w`

chosen as some multiple of `mean(diff(x))`

. Results are not great so far.

Has anyone here seen anything similar to this? Image stitching seems adjacent, but not a perfect match.