interp_linear — MATH interp_poly op

• Data kinds: signal × signal × signal → signal

• Call: import fullseye as fs; fs.ledger.interp_linear(x, y, xq, out_of_range='raise') (implementation को सीधे call करना हो तो import mathops; mathops.interp_linear(x, y, xq, out_of_range='raise'), registry से लेना हो तो opsmath.get("interp_linear"))

उपयोग

query *xq* पर (x, y) samples का piecewise-linear interpolation।

> नीचे का विस्तृत विवरण मूल text में है — सारांश और headings का अनुवाद हो चुका है।

*x* must be strictly increasing (fail-closed: an unsorted or duplicated grid raises rather than being silently reordered). *xq* is a scalar or a 1-D array; a scalar query returns a Python float, an array returns float64.

Out-of-range is an explicit choice, never silent: 'raise' (default) refuses any query outside [x[0], x[-1]] — a calibration table queried beyond its calibrated range is a wrong answer waiting to happen — while 'clamp' holds the boundary values (the honest flat extension; there is deliberately no silent linear extrapolation mode).

Exact on the nodes and exact for data that is genuinely piecewise linear.

HALCON: get_y_value_funct_1d interpolates function pairs the same way (see funct1d, which works HALCON's index-grid convention; this op takes an arbitrary strictly-increasing x grid).

पूरी family का input contract (fail-closed)

mathops के सभी ops गणना से पहले input की जाँच करते हैं (कुछ भी चुपचाप पास नहीं होता):

• complex input से ValueError — float64 में ज़बरदस्ती बदलने पर imaginary part चुपचाप छूट जाता है (numpy केवल ComplexWarning देता है और "सही दिखने वाला पर गलत" real number लौटाता है)। .real/.imag/abs() स्पष्ट रूप से लिखें, या complex data संभालने वाले complexops का उपयोग करें।

• masked array (masked elements वाला) से ValueError — mask हटाकर नीचे के raw values इस्तेमाल करने वाला implicit conversion अस्वीकार है। भरना है या हटाना है, यह स्पष्ट रूप से बताएँ।

• हर input पर NaN/Inf से ValueError (गिनती बताकर अस्वीकार — क्योंकि यह पूरे परिणाम में फैल जाता है)।

• Shape सख़्त है: 1-D और 2-D को implicit रूप से promote या broadcast नहीं किया जाता (vector slot में matrix या matrix slot में vector देने पर ValueError; reshape स्पष्ट रूप से करें)।

• Size की सीमा: matrix लेने वाले ops और stat_histogram के bins, mathops.MAX_ELEMENTS (2^26 ≈ 6.7 करोड़ elements) से अधिक होने पर ValueError देते हैं।

उपयोग की विस्तृत guide

• math_metrology family guide

संदर्भ (sample data, साहित्य)

• Sample data catalog (DL URL / license) — 2-D के लिए skimage.data (BSD/public) + synthetic, 3-D के लिए real data sources (Stanford/PDS आदि) के DL URL।

• Operators का स्रोत और संदर्भ — इस op family के मूल research/methods के स्रोत।

• Algorithm का मानक स्रोत (लेखक, वर्ष) और उपयोग ऊपर की family usage guide में दिए गए हैं।

चलाए जा सकने वाले उदाहरण (verified samples जो सच में यह op call करते हैं)

• math_metrology — py -3.11 examples/math_metrology.py

• poc_thermal_radiometry — py -3.11 examples/poc_thermal_radiometry.py

वे अगले ops जिनसे type जुड़ता है (signal को input के रूप में लेते हैं)

mat_solve · mat_lstsq · stat_describe · stat_histogram · stat_zscore · interp_cubic · interp_scattered · poly_fit

इसी category के (interp_poly)

interp_cubic · interp_scattered · poly_fit · poly_eval · poly_roots


*Provenance: mathops.py — MATH operator registry. यह per-op note tools/opdocs.py md से अपने-आप generate होता है (हाथ से edit न करें)।*

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