transfer_function — ACOUSTICS dual op

• Data kinds: signal × signal → table

• Call: import fullseye as fs; fs.ledger.transfer_function(x, y, rate, win=None, hop=None, window='hann', estimator='h1', ref=1.0, floor_db=-200.0) (implementation को सीधे call करना हो तो import acoustics; acoustics.transfer_function(x, y, rate, win=None, hop=None, window='hann', estimator='h1', ref=1.0, floor_db=-200.0), registry से लेना हो तो opsacoustics.get("transfer_function"))

उपयोग

x इनपुट और y आउटपुट के साथ H(f) का अनुमान लगाता है, उसकी coherence के साथ।

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

estimator:

• "h1" — Pxy / Pxx. Unbiased when the noise is on the output. The usual default and the right one for a driven test.

• "h2" — Pyy / conj(Pxy). Unbiased when the noise is on the input. It over-estimates the magnitude wherever H1 under-estimates it, so the two together bracket the truth, and |H1/H2| = gamma**2 exactly — an identity worth checking rather than a coincidence.

Returns a dict: freqs, response (complex), magnitude, magnitude_db (relative to ref), phase_rad, coherence, estimator, n_frames, win, hop, rate.

Measured at 16 kHz over 16384 samples, win = 1024, 31 frames, white input:

• y = 2.5 * x: mean |H| = 2.5000000000, max deviation from 2.5 over all bins 1.78e-15, mean |phase| 2.7e-17, mean coherence 1.0000000000.

• y = 0.8 * x[n-37]: the phase is a straight line in frequency of slope -2 pi * 37 / 16000 s. A least-squares fit to the unwrapped phase over 200-7000 Hz gives a group delay of 37.000004 samples against a true 37 (error 4.3e-06 samples), and mean |H| = 0.792220 over the same bins against a true 0.8 (max deviation 0.050).

• y = 2.5 * x + n with output noise at 0 dB SNR: H1 gives mean |H| = 2.523390 — 0.94 % from the truth — while H2 gives 5.043020, a factor of 2.0 too large, exactly as the theory predicts when the noise sits on the output. And |H1/H2| equals the coherence pointwise to 5.6e-16 (both mean 0.509143), which is the identity worth

knowing: the ratio of the two estimators *is* the coherence.

That third row is why the coherence is returned with the response. The H2 number is off by 100 % and there is nothing about 5.04 that looks wrong.

Raises ValueError: everything coherence refuses, plus an unknown estimator and ref <= 0.

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

• acoustic_condition_monitoring 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 करते हैं)

• acoustic_condition_monitoring — py -3.11 examples/acoustic_condition_monitoring.py

• poc_leak_localization — py -3.11 examples/poc_leak_localization.py

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

istft

इसी category के (dual)

coherence · gcc_delay


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

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