2014-04-09 4 views
1

특정 주파수의 펄스로 데이터를 전송할 수 있지만 주파수가 있는지 감지하는 방법은 확실하지 않은 프로그램을 만들고 싶습니다.마이크에서 주파수 감지 Java

나는 모든 불필요한 주파수를 걸러 낼 필요가 있다고 생각 하겠지만 어떻게해야 하는지를 찾을 수없는 것 같습니다.

이미이 작업을 수행하고 있거나 내 작업을 직접 구축해야하는 라이브러리가 있습니까? 이것 또는 이와 유사한 어떤 예가 있습니까?

+1

빠른 푸리에 변환을 찾으십시오. Apache Maths 라이브러리에는 몇 가지 방법이 있습니다. 또한 tuxguitar 프로젝트의 소스 코드를보고 튜너가 어떻게 만들어 졌는지 확인할 수 있습니다. (또한 FFT 사용) https://github.com/jfinkels/tuxguitar/tree/master/src/main/java/craigl/spectrumanalyzer –

답변

1

Modem을 구현하려는 것처럼 보이며이 용도로 사용되는 입증 된 변조 기술 - 보통 QPSKQAM을 살펴 보는 것이 좋습니다. 질문에 암시하는 기술은 진폭 변조의 원유입니다. 기본적으로 주어진 주파수의 반송파를 비트 스트림으로 변조합니다. Heterodyning은 이것을 복조 할 때 시작하는 것이 좋습니다. FFT를 사용하면 윈도우 잉의 샘플링 효과로 인해 불량한 결과가 나올 것이며, 이로 인해 빈약 한 대역폭이됩니다.

일단 신호를 복조하면 또 다른 실질적인 문제는 클럭 복구입니다. 원래의 비트 스트림 클록이 수신기의 샘플 클록과 비동기적일 가능성이 높습니다. 데이터 스트림을 디코딩하려면 보낸 사람의 시계 (즉, 시계와 로컬 시계의 관계)를 복구해야합니다. A Phased Lock Loop이이를 달성하는 일반적인 방법입니다.

또한 비트 스트림의 시작을 감지하는 방법을 알아야합니다. 어떤 종류의 프레임.

0

주파수 영역에서 신호 데이터를 보려면 푸리에 변환을 적용해야합니다. JTransforms은이를 수행하는 데 사용할 수있는 오픈 소스 라이브러리입니다.

+0

펄스의 폭과 주파수에 따라 OP가 의도하는 경우 DFT가 좋지 않습니다. 윈도우주기의 두 배보다 더 자주 펄스를 감지합니다. 어떤 종류의 주파수 차별이 필요한 경우, 이것은 매우 열악한 비트 전송률입니다. – marko