weighting_response — ACOUSTICS level op

• Data kinds: signal → signal

• Call: import fullseye as fs; fs.ledger.weighting_response(freqs, kind='A', floor_db=-200.0) (implementation को सीधे call करना हो तो import acoustics; acoustics.weighting_response(freqs, kind='A', floor_db=-200.0), registry से लेना हो तो opsacoustics.get("weighting_response"))

उपयोग

दी गई frequencies पर A / C / Z frequency-weighting curve, dB में।

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

Computed from the four pole frequencies that *define* the networks and normalised so that the response at 1 kHz is exactly 0 dB by construction — the curve is divided by its own value at 1 kHz rather than having a published offset constant added to it. That is why the tests can assert equality at 1 kHz to 0.0 rather than to a tolerance, and why no standard's table of attenuations appears anywhere in this repository.

The response depends on f only through f**2, so it is an even function and negative frequencies are evaluated at |f| — that is the definition, not a repair. f = 0 has zero response (both curves have a zero at DC) and is reported as floor_db rather than -inf.

Measured (computed, then printed — these are outputs, not transcriptions):

======== ========= =========

f (Hz) A (dB) C (dB)

======== ========= =========

10 -70.4304 -14.3300

31.5 -39.5250 -3.0305

100 -19.1428 -0.2996

1000 0.0000 0.0000

4000 0.9633 -0.8260

10000 -2.4918 -4.4055

20000 -9.3469 -11.2786

======== ========= =========

A(1000) and C(1000) are exactly 0.0 — the Python float, not a rounding — because of the construction. The low-frequency asymptote is a closed form and is asserted in the tests: A falls at exactly 80 dB/decade as f -> 0 (f**4 over three constants) and C at exactly 40 dB/decade (f**2). Measured between 0.001 and 0.01 Hz with the floor lowered out of the way: 79.999998 and 39.999998 dB/decade.

That last caveat is real and is why the floor is an argument: with the default floor_db = -200 the A curve reaches the floor below about 0.35 Hz (unfloored, A(0.1) = -228.55 dB), so the asymptote measured against the default floor comes out as 0.0 dB/decade between 0.01 and 0.1 Hz — a clamp, correctly reported, that would look like a bug if the floor were not visible.

Returns a float64 array the same shape as *freqs*.

Raises ValueError: a non-1-D / non-finite / complex / masked freqs, an unknown kind.

उपयोग की विस्तृत 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

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

stft · envelope_spectrum · spectral_kurtosis · cepstrum · angular_resample · order_spectrum · octave_spectrum · apply_weighting

इसी category के (level)

octave_bands · octave_spectrum · apply_weighting · equivalent_level · percentile_level


*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.