주파수 분할 다중화 문서의 검증 코드다. if __name__ == "__main__": 아래가 자체 테스트다.
"""주파수 분할 다중화(FDM)의 채널 배치 계산 검증.
문서: 14.주파수 분할 다중화 (예시, 예제, 활용)
문서 예시의 스펙트럼: 반송파 64, 68, 72 kHz, 채널 3개가 60~64, 64~68, 68~72 kHz를 차지한다.
"""
from fractions import Fraction as F
def main() -> None:
carriers = [64, 68, 72]
width = 4 # kHz
channels = [(c - width, c) for c in carriers] # 반송파 바로 아래 4 kHz
assert channels == [(60, 64), (64, 68), (68, 72)]
assert all(a[1] == b[0] for a, b in zip(channels, channels[1:])) # 서로 겹치지 않고 붙어 있음
assert (72 - 60) // width == 3 and (108 - 60) // width == 12
print("[OK] 채널", channels, "/ 60~108 kHz는 12채널")
voice = F(3_400 - 300, 4_000)
assert voice == F(31, 40)
print(f"[OK] 음성 대역 300~3,400 Hz / 채널 4 kHz = {float(voice):.1%}, 나머지 {float(1 - voice):.1%}")
print("ALL CHECKS PASSED")
if __name__ == "__main__":
main()