Re: Reverse interpolation?

• Subject: Re: Reverse interpolation?
• From: Martin Schultz <martin.schultz(at)dkrz.de>
• Date: Wed, 16 Aug 2000 17:30:39 +0200
• Newsgroups: comp.lang.idl-pvwave
• Organization: Max-Planck-Institut fuer Meteorologie, Hamburg
• References: <399AAB76.2E547046@mathstat.dal.ca>
• Xref: news.doit.wisc.edu comp.lang.idl-pvwave:20889

```Simon de Vet wrote:
>
> I have a little problem :)
>
> I have three sets of data - a list of altitudes (which are not evenly
> spaced, and are calculated with a long, confusing formula), an altitude
> I want to match, and a set of data that depends on altitude (ie: entry 1
> corresponds to altitude 1, entry 2 to altitude 2, etc...).
>
> Currently, I am calculating the differences between each entry in the
> altitude list and my known altitude, and using this to find the closest
> match, who's subscript I use in the data array. However, since there
> aren't very many values in my altitude list, the closest matches are
> often not very close at all, and the results become inaccurate.
>
> I want to get better results. Instead of finding that entry #5 is the
> closest match to my known altitude, and using #5 as the subscript in my
> data array, I'd like to find that, based on a linear interpolation,
> entry #5.32850 is an exact match, and using this value in an
> interpolation on my data array.
>
> I understand how to use a subscript to find an interpolated value. How
> would I go in the opposite direction, using a value to find a subscript?
>
> Thanks. I hope this isn't too confusing. I'm having a bad brane day.
>
> Simon

Hi Simon,

I have dealt with similar problems (vertical regridding, to
give the kid a name), and I tend to resort on the spline routine
in these instances. Please find attached a piece of code that I
used to vertically regrid OH concentration fields. Just be
careful about end effects. For this application I overwrote the
topmostfour levels of the target grid with the values from the
top level of the old grid.

Cheers,
Martin

FOR i=0,N_Elements(grid.lon)-1 DO BEGIN
FOR j=0,N_Elements(grid.lat)-1 DO BEGIN

oldx = reverse( reform( newoh[i,j,*,month-1] ) )
oldy = reverse( reform( data.p ) )
newy = reform( pgrid[i,j,*,month-1] )

;; Smooth spline interpolation onto new grid
newxx = Spline( oldy, oldx, newy, 5. )

;; Enter new values in result field
resultoh[i,j,*,month-1] =
reform(newxx,1,1,N_Elements(newxx))
ENDFOR
ENDFOR
--
[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[
[[ Dr. Martin Schultz   Max-Planck-Institut fuer Meteorologie
[[
[[                      Bundesstr. 55, 20146 Hamburg
[[
[[                      phone: +49 40 41173-308
[[
[[                      fax:   +49 40 41173-298
[[
[[ martin.schultz@dkrz.de
[[
[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[

```