Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with
or
.
Download ZIP

Loading…

Delaunay interpolator: support grid whose width or height is 1 #997

Closed
AmitAronovitch opened this Issue · 1 comment

3 participants

@AmitAronovitch

The current implementation of Delaunay interpolator returns NaN for grids whose x or y has dimension 1 (i.e. when you try to interpolate along a horizontal/vertical line, or in a single point). See example below.

It seems that this can be fixed by simple rearrangement of calculations (pull request underway).
The suggested implementation is almost identical. It might actually perform faster in some cases (there is one less multiplication op in the inner loop). There might be some differences in accuracy, but I believe they should only become observable in cases where the grid size is very large (which would probably cause memory problems anyway).

Example (before suggested patch):

>>> from matplotlib.delaunay import Triangulation
>>> tri = Triangulation([0,10,10,0],[0,0,10,10])
>>> lin = tri.linear_interpolator([1,10,5,2.0])
>>> # 2x2 grid works fine
>>> lin[3:6:2j,1:4:2j]
array([[ 1.6,  3.1],
       [ 1.9,  2.8]])
>>> # but not when 1x2, 2x1, 1x1:
>>> lin[3:6:2j,1:1:1j]
array([[ nan],
       [ nan]])
>>> lin[3:3:1j,1:1:1j]
array([[ nan]])
>>>

After suggested patch:

>>> from matplotlib.delaunay import Triangulation
>>> tri = Triangulation([0,10,10,0],[0,0,10,10])
>>> lin = tri.linear_interpolator([1,10,5,2.0])
>>> # 2x2 grid: same same
>>> lin[3:6:2j,1:4:2j]
array([[ 1.6,  3.1],
       [ 1.9,  2.8]])
>>> # but these work now
>>> lin[3:6:2j,1:1:1j]
array([[ 1.6],
       [ 1.9]])
>>> lin[3:3:1j,1:1:1j]
array([[ 1.6]])
>>> 
@WeatherGod
Collaborator

Cross-referencing PR #998

@AmitAronovitch AmitAronovitch referenced this issue from a commit in AmitAronovitch/matplotlib
Amit Aronovitch delaunay: test for 1d and 0d grids (fails upstream) re: issue #997 49215c2
@AmitAronovitch AmitAronovitch referenced this issue from a commit in AmitAronovitch/matplotlib
Amit Aronovitch Merge branch 'iss997_test' (test for issue #997) 1e7e2cc
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Something went wrong with that request. Please try again.