dual op• 데이터 종류: signal × signal → measurement
• 호출: import fullseye as fs; fs.ledger.gcc_delay(a, b, rate=1.0, weight='phat', band=None, interpolate=True)(구현을 직접 호출하려면 import acoustics; acoustics.gcc_delay(a, b, rate=1.0, weight='phat', band=None, interpolate=True), 원장에서 가져오려면 opsacoustics.get("gcc_delay"))
• 원장 경유의 반환값: fullseye.ledger.gcc_delay(...) 는 **선언된 out 형 measurement 의 값만** 반환합니다(실제 함수는 보조 정보도 반환). 버려진 쪽이 필요하면 fullseye.ledger.gcc_delay.raw(...) 를 쓰거나 acoustics.gcc_delay 를 직접 호출하세요.
> 이 연산자의 설명은 아직 번역이 없습니다. 원문을 그대로 싣습니다.
2 チャンネルの到達時間差を一般化相互相関(GCC)で測る。→ `(delay, table)`。
漏水の位置決め、音源の方向、超音波の肉厚、振動の伝搬 —— どれも「同じ源が 2 か所に
いつ着いたか」の差で決まる。この op はその差を秒(`rate` が既定 1.0 なら標本)で
返す。位置に直すには経路長と伝搬速度を掛ける(`x = (L - c·delay) / 2` の形)。
★速度の仮定がそのまま位置の誤差になる。相関がどれだけ綺麗でも、掛ける速度が
10 % 違えば位置は経路の中心からの距離に比例してずれる(poc_leak_localization の
実測: 中心から 18 m の漏水で +1.798 m、幾何の予測 1.800 m)。相関の質と位置の
正しさは別の量なので、報告では分けること。
Args:
a, b: 同じ長さの 1-D 記録。**`b が a より遅れていれば delay` は正**
(`b(t) ≈ a(t - delay)`)。
rate: 標本化周波数 [Hz]。既定 1.0 のときは返りの単位が「標本」。
weight: 相互スペクトルの重み。
`"none"` = 素の相互相関(SNR が高く反射が無ければ最良)、
`"phat"` = 位相変換(振幅を白色化。残響に強いとされる)、
`"roth" = 1/|A|²、"scot" = 1/sqrt(|A|²|B|²)`。
★PHAT が常に勝つわけではない: 反射が非対称な経路では遅延そのものが
偏るので、どの重みでも取り除けない(実測: 反射 0.8 で raw 0.134 m /
PHAT 0.114 m と 1 割しか違わず、RMS はほぼ全部が偏り)。
band: `(lo_hz, hi_hz) で帯域を絞る(rate が要る)。None` で全帯域。
全帯域の PHAT は信号の無いビンまで持ち上げるので、**帯域を切るほうが
効くことが多い**(実測で 8 倍)。
interpolate: ピーク周りの放物線補間でサブ標本まで読む(既定 True)。
切ると量子化の刻みが散らばりでなく偏りとして残る(位置を固定すると
毎回同じ方向に外す。PIV のピークロッキングと同じ)。
★補間しても偏りは消えない: 相関のピークは sinc 状で、放物線では
近似しきれない。白色雑音・全帯域で 0〜1 標本を振った実測では、
誤差が 最大 0.117 標本の S 字(整数の近くで 0、0.3 / 0.7 付近で最大、
向きは整数へ引く)。サブ標本の精度を語るときはこの偏りを含めること。
Returns:
`(delay, table): delay は秒(rate=1.0` なら標本)の float。
`table は `{"lags": (2N-1,) の遅れ, "r": 相関値, "peak": ピーク値,
"snr_peak": ピーク / 副次ピークの比}``。
★台帳経由(`fullseye.ledger.gcc_delay)は宣言 out 型の delay` だけを
返す。相関曲線も要るときは `fullseye.ledger.gcc_delay.raw(...)`。
Raises:
ValueError: 長さが違う / 2 未満 / 非有限、`weight が未知、band` が
`(lo, hi) でない・lo >= hi・rate` に対して無効なとき。
限界(honest): (1) 反射・分散・経路差が作る偏りは取れない ——
取れるのは雑音による散らばりだけ。(2) 相関のピークを 1 つ選ぶので、
多重路で副次ピークが勝つと不連続に外す(`snr_peak` を見ること)。
(3) 遅延が記録長の半分を超えると折り返す。
Reference (public): C. H. Knapp, G. C. Carter, "The Generalized Correlation
Method for Estimation of Time Delay", IEEE Trans. ASSP 24(4), 1976, 320-327.
• acoustic_condition_monitoring 패밀리 가이드
• 샘플 데이터 카탈로그(DL URL / 라이선스) —— 2-D 는 skimage.data(BSD/public)+ 합성, 3-D 는 실데이터 소스(Stanford/PDS 등)의 DL URL.
• 연산자의 내력·참고문헌 —— 이 연산자 족의 바탕이 된 연구/기법의 출처.
• 알고리즘의 정전(저자·연도)과 용도는 위의 패밀리 사용 가이드에 적혀 있습니다.
• acoustic_condition_monitoring — py -3.11 examples/acoustic_condition_monitoring.py
measurement 를 입력으로 받는 것)—
dual)*Provenance: acoustics.py — ACOUSTICS 연산자 레지스트리. 이 op 노트는 tools/opdocs.py md 가 자동 생성합니다(직접 편집하지 마세요).*
© 2026 Kazufumi Furuse — Fullseye operator documentation. Licensed under Apache-2.0.