interp_scattered — MATH interp_poly op

• 数据种类:points × signal × points → table

• 调用: import fullseye as fs; fs.ledger.interp_scattered(points, values, query, method='linear', fill_value=nan, rescale=False, neighbors=None)(要直接调用实现,import mathops; mathops.interp_scattered(points, values, query, method='linear', fill_value=nan, rescale=False, neighbors=None);从台账取用则 opsmath.get("interp_scattered"))

用法

> 该算子的说明尚无译文,以下照原文给出。

Values at *query* from scattered samples — sensor nets, boreholes, weather.

interp_linear and interp_cubic need samples on a sorted 1-D axis. A great deal of measurement does not arrive that way: temperature sensors bolted wherever a rack allowed, boreholes drilled where access permitted, weather stations placed by history. This is the N-D scattered entry point (scipy.interpolate), and it returns how much of the answer was not interpolation at all.

*method*:

"nearest"

the value of the closest sample. Defined everywhere, and never

overshoots, but it is a staircase: on a smooth field the step itself

becomes a false feature. Measured on a smooth 3-D field sampled at 0.60,

the nearest-neighbour reconstruction leaves a residual of 0.975 units

where the sensor noise is only 0.15 — 6.5 times the noise, and none of

it is noise.

"linear"

barycentric interpolation on a Delaunay triangulation. Never exceeds the

surrounding samples, and is undefined outside their convex hull.

"rbf"

a thin-plate radial basis function through every sample. Smooth and

defined everywhere, but it overshoots its own nodes: measured on the

same field it returns peaks 1.372 times the sampled height, which is a

37 % over-statement of a hot spot that no interpolation of the data can

justify.

The point of the outside return value. Sensors sit inside a room, a site, a country; the corners are always outside their hull. Ask a linear interpolator there and it returns fill_value, or, if a caller quietly falls back to nearest, it returns a different method's answer under the first method's name. Measured on a 12 x 8.4 x 3.0 m room sampled at 1.20 m spacing, 71.2 % of the evaluation grid lay outside the hull. A number that large has to be visible, so it is returned rather than logged.

Parameters

points : (n, d) array_like

Sample coordinates. 1-D input is accepted and treated as (n, 1).

values : (n,) array_like

query : (m, d) or (..., d) array_like

Where to evaluate. The leading shape is preserved in the result.

method : {"linear", "nearest", "rbf"}

fill_value : float

Returned outside the convex hull for "linear". "nearest" and

"rbf" are defined everywhere and ignore it.

rescale : bool

Normalise each axis before triangulating. Needed when the axes have very

different units (metres against millimetres); ignored by "rbf".

neighbors : int or None

"rbf" only: solve against the *k* nearest samples instead of all of

them. The global solve is O(n^3); measured on 5000 query points in 3-D,

it costs 0.55 / 1.76 / 7.53 s at 1400 / 4000 / 8000 samples, while

neighbors=48 costs 0.38 / 0.55 / 0.81 s. Below a few thousand

samples the global solve is fine and exact — the knob earns its place

above that. None keeps the exact global solution.

Returns

dict

value (query shape), outside (bool mask, query shape, of query

points beyond the convex hull of the samples), outside_fraction,

method, n_points.

Fail-closed: fewer samples than d + 1 cannot define a simplex, and raises ValueError rather than returning a field made of fill_value.

See also

interp_linear : the sorted 1-D case, which is cheaper and needs no hull.

该族通用的输入契约(fail-closed)

mathops 的每个算子都先校验输入再计算(不让任何东西无声通过):

• complex 输入一律 ValueError —— 强制转成 float64 会无声丢掉虚部(numpy 只发一个 ComplexWarning,然后返回一个「看着合理却是错的」实数)。请显式写出 .real/.imag/abs(),或改用支持复数的 complexops。

• 含被掩元素的 masked array 一律 ValueError —— 拒绝「剥掉掩码直接使用下面原值」的隐式转换。请显式选择填充还是丢弃。

• 所有输入中的 NaN/Inf 一律 ValueError(明确给出个数后拒绝 —— 它会污染整个结果)。

• 形状严格:不对 1-D 与 2-D 做隐式提升或广播(向量槽位收到矩阵、矩阵槽位收到向量都是 ValueError;请显式 reshape)。

• 尺寸上限:接受矩阵的算子与 stat_histogram 的 bins,超过 mathops.MAX_ELEMENTS(2^26 ≈ 6700 万个元素)即 ValueError。

详细使用指南

• math_metrology 族使用指南

参考(示例数据、文献)

• 示例数据目录(下载 URL / 许可证) —— 2-D 用 skimage.data(BSD/公有领域)加合成图,3-D 给出真实数据源(Stanford/PDS 等)的下载 URL。

• 算子来历与参考文献 —— 该算子族所依据的研究/方法出处。

• 算法的正典(作者、年份)与用途见上面的族使用指南。

可运行的示例(实际调用该算子并已验证的样例)

• poc_datacenter_thermal_field — py -3.11 examples/poc_datacenter_thermal_field.py

• poc_multibeam_bathymetry — py -3.11 examples/poc_multibeam_bathymetry.py

• poc_stockpile_volume — py -3.11 examples/poc_stockpile_volume.py

类型可衔接的下一个算子(可接受 table 作为输入)

dynsys_poincare_section · dwt_inverse · chebyshev_eval_nd

同类别(interp_poly)

interp_linear · interp_cubic · poly_fit · poly_eval · poly_roots


*Provenance: mathops.py — MATH 算子登记表。本条目由 tools/opdocs.py md 自动生成(请勿手工编辑)。*

© 2026 Kazufumi Furuse — Fullseye operator documentation. Licensed under Apache-2.0.