residue_crt — RESIDUE robust op

• Data kinds: matrix × signal → table

• Call: import fullseye as fs; fs.ledger.residue_crt(residues, periods, weights=None, lo=0.0, hi=None, on_outside='warn') -> 'dict' (implementation को सीधे call करना हो तो import residue; residue.residue_crt(residues, periods, weights=None, lo=0.0, hi=None, on_outside='warn') -> 'dict', registry से लेना हो तो opsresidue.get("residue_crt"))

उपयोग

real periods पर weighted robust CRT -> dict।

[lo, hi) में v के लिए v ≡ residues[i] (mod periods[i]) हल करता है। residues में बैंड-अक्ष पहले है, आकार (N,) या (N, ...) — पीछे का हर तत्व स्वतंत्र रूप से हल होता है (एक पिक्सेल, एक नमूना)। weights (समान आकार, या (N,)) बताते हैं कि हर बैंड पर कितना भरोसा है — आमतौर पर उन दो आयामों का गुणनफल जिनसे फ़ेज़ आया; बिना कंट्रास्ट वाले बैंड का कोई वोट नहीं।

विधि: हर नमूने के लिए एक बैंड *संदर्भ* (reference) होता है (Wang & Xia 2010, खंड IV-A: सबसे कम शोर-प्रसरण वाला शेषफल; बैंड i का प्रसरण p_i^2 / w_i माना जाता है, यानी समान फ़ेज़-शोर जिसे भार से मापा गया; समान प्रसरण वाले बैंडों में वह जिसका शेषफल mod Γ साझा शेषफल के सबसे निकट है, समीकरण (55)/(58))। सीमा के भीतर हर उम्मीदवार v = r_ref + k p_ref को फ़ेज़र-सहमति sum_i w_i cos(2 pi (v - r_i)/p_i) (von Mises फ़ेज़-शोर के लिए अधिकतम-संभाविता मानदंड) से अंक दिए जाते हैं; सबसे अच्छे को चिह्नित अवशेषों के व्युत्क्रम-प्रसरण-भारित माध्य से परिष्कृत किया जाता है। उम्मीदवार संदर्भ की अपनी त्रुटि साथ लाता है, इसलिए [lo, hi) के बाहर Γ/4 तक के उम्मीदवार भी स्वीकार किए जाते हैं (इतना कभी नहीं कि एक मान दो बार आए)। 2026-10-15 तक हमेशा सबसे लंबा आवर्तकाल संदर्भ था: समान फ़ेज़-शोर में वह v की इकाइयों में *सबसे शोरयुक्त* शेषफल है, और अप्रत्यक्ष ToF (16/80/120 MHz, σ_φ 0.33 rad) में फ़ोल्डिंग-त्रुटि दर 0.556 थी, जबकि हर परिकल्पना आज़माने पर 0.116; अब यह 0.116 है (सार्वजनिक कच्चा डेटा, 10 फ़्रेम: 0.293 -> 0.131, संपूर्ण डिकोडर के बराबर)।

गारंटी (Wang & Xia 2010, समीकरण (47)): आवर्तकालों को Γ M_i लिखें (Γ उनका साझा गुणनखंड, M_i पूर्णांक)। यदि हर शेषफल-त्रुटि Γ/4 से कम है, तो फ़ोल्डिंग पूर्णांक सटीक हैं और |value - v| < Γ/4, चाहे कोई भी बैंड संदर्भ हो: गलत उम्मीदवार कम से कम एक बैंड को Γ के किसी शून्येतर गुणज से खिसकाता है, जिससे उस बैंड का फ़ेज़र-पद सख़्ती से घटता है (यदि केवल शून्य-भार वाले बैंड ही दो उम्मीदवारों में भेद करते हैं, तो margin 0 है)। फ़ेज़ के रूप में बैंड i की अनुमत त्रुटि 2 pi (Γ/4) / p_i है — सबसे लंबे आवर्तकाल पर सबसे कम। जिस नमूने के शेषफल mod Γ Γ/2 से छोटे चाप में नहीं समाते, वह सिद्ध रूप से उस सीमा के बाहर है (within_bound False; उल्टा निश्चित नहीं — ठीक एक Γ की त्रुटि पकड़ी नहीं जा सकती)। तब क्या हो, यह on_outside तय करता है: "warn" (डिफ़ॉल्ट, ResidueBoundWarning), "raise" (ValueError), "nan" (उन नमूनों का मान NaN, margin 0) या "flag" (केवल within_bound)। असमापवर्त्य आवर्तकालों (स्पष्ट hi) का न Γ है न गारंटी: हर नमूना बाहर है।

लौटाता है {"value", "score", "margin", "residual", "n_candidates", "unambiguous_range", "gamma", "error_bound", "phase_bound_rad", "reference", "within_bound"}: score [-1, 1] में (1 = सभी बैंड पूर्णतः सहमत), margin = सर्वश्रेष्ठ और दूसरे स्थान के अंकों का अंतर (छोटा = लगभग बराबरी — अविश्वसनीय मानें), residual हर बैंड का, v की इकाइयों में; gamma = Γ, error_bound = Γ/4, phase_bound_rad हर बैंड का, reference = हर नमूने में प्रयुक्त बैंड का क्रमांक। hi का डिफ़ॉल्ट lo + आवर्तकालों का लघुत्तम समापवर्त्य है (जब वे समापवर्त्य हों); उससे चौड़ी सीमा अस्वीकार की जाती है, क्योंकि उसमें दो मानों के शेषफल समान होंगे।

सटीकता: परस्पर सहअभाज्य पूर्णांक आवर्तकालों के पूर्णांक शेषफल residue_integer_crt को सटीक रूप से दोहराते हैं।

संदर्भ (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 करते हैं)

• poc_itof_multifreq — py -3.11 examples/poc_itof_multifreq.py

• poc_residue_crt — py -3.11 examples/poc_residue_crt.py

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

—

इसी category के (robust)

residue_fault_locate


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

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