잡음이 발생하는 톤 버스트의 시작 시간을 추정합니까?


14

시끄러운 신호에서 정현파 톤 버스트의 시작 시간을 추정하기 위해 어떤 기술을 사용할 수 있습니까?

톤 버스트에 알려진 고정 주파수 (알 수없는 위상)와 매우 급격한 상승 시간이 있고, 목표는 상승 시간의 절반보다 나은 시간 및 / 또는 톤 주파수의 한주기 내에서 시작 시간을 추정하는 것이라고 가정합니다. , 가능하다면. S / N 비율이 매우 낮 으면 (1보다 훨씬 작음) 추정 기법이 어떻게 변할 수 있습니까?

추가 : 톤 버스트의 길이는 알 수 없지만 상승 시간과 주파수주기의 작은 배수보다 길다고 가정합니다.

추가 : DFT / FFT는 매우 가능성있는 톤의 존재를 보여줍니다. 문제는 FFT 창에서 FFT 창 내에서 톤 (또는 동일한 주파수의 다중 톤 버스트)이 시작된 위치를 정확하게 파악하거나 현재 톤이 해당 DFT 창 밖에서 시작되었는지 확인하는 것입니다. 추가 시간 도메인 데이터.

레이더 펄스 감지 정확도는 톤의 길이가 알려지지 않았고 알려진 상승 시간이 아닌 변조되지 않은 경우에 가장자리 만있는 것을 제외하고는 필요한 분해능에 더 가깝습니다. 협 대역 통과 필터는 상승 시간을 왜곡하여 에지 도착 추정 분해능을 제거합니다.


1
우리는 소음에 대해 무엇을 가정 할 수 있습니까? 고정되어 있습니까? 어떤 종류의 배포판을 따르고 있습니까?
— Phonon

2
탐지기의 잘못된 경보는 바람직하지 않습니까? 각 펄스를 올바르게 감지 할 확률에 대한 사양이 있습니까? 이는 프론트 엔드 레이더 신호 처리와 매우 유사합니다. 노이즈에 임베드 된 (가능하게 변조 된) 펄스를 찾아서 해당 파라미터를 추정합니다.
— Jason R

1
실시간으로해야합니까, 아니면 오프라인 분석입니까?
— nibot

2
@ hotpaw2 : 당신은에 대해 어떻게 좋아하지 않았다 Goertzel 알고리즘 에 따라 이 SO의 대답은 ?
— Peter K.

1
Goertzel 알고리즘은 톤 감지에 사용됩니다. 필터의 출력은 튜닝되는 주파수에서 신호의 "전력"을 추정 한 것입니다. 임계 값을 선택하십시오. 필터 출력이 이보다 높으면 신호음을 감지 한 것입니다. 임계 값을 적절하게 설정하면 톤의 시작을 조기에 감지 할 수 있습니다 (또한 잘못된 경보가 발생하기 쉽습니다).
— Peter K.

답변:


6

주석에서 논의했듯이 Goertzel 알고리즘 은 노이즈 톤을 감지하는 일반적인 방법입니다. 토론 후, 나는 그것이 당신이 무엇을 겪고 있는지 확신 할 수 없지만 ( 시작 시간 을 원합니다 ) Goertzel 알고리즘이 문제에 어떻게 적용될 수 있는지 혼란스러워 보였습니다. 여기.

고 르트 젤 알고리즘

Goertzel 알고리즘은 원하는 톤의 주파수를 알고 있고 ( 라고 부르는 경우 ) 적절한 감지 임계 값을 선택할 수 있도록 노이즈 레벨에 대한 합리적인 아이디어가있는 경우 사용하는 것이 좋습니다.fg

Goertzel 알고리즘은 항상 ONE FFT bin의 출력을 계산하는 것으로 생각할 수 있습니다.

y(n)=eȷ2πfgn∑k=0nx(n)e−ȷ2πfgk

여기서 는 원하는 주파수입니다.fg

Wikipedia 페이지에서 이를 계산하는 더 좋은 방법이 있습니다.

Scilab 을 구현하려는 시도 는 다음과 같습니다 .

function [y,resultr,resulti] = goertzel(f_goertzel,x)
realW = 2.0*cos(2.0*%pi*f_goertzel);
imagW = sin(2.0*%pi*f_goertzel);

d1 = 0;
d2 = 0;

for n = 0:length(x)-1,
    y(n+1) = x(n+1) + realW*d1 - d2;
    d2 = d1;
    d1 = y(n+1);
    resultr(n+1) = 0.5*realW*d1 - d2;
    resulti(n+1) = imagW*d1;
end
endfunction

및 ϕ = 4.4318752 인 신호를 고려하십시오 .f=0.0239074ϕ=4.4318752

x=sin⁡(2πfn+ϕ)+ϵ(n)

ϵ(n)

이 예에서, 톤은 인덱스 (1001)에서 신호의 1/3을 시작한다.

fg=f−0.001

fg=f

네 가지 흔적은 다음과 같습니다.

  • xyfg=0.0229074
  • resultr2+resulti2
  • xyfg=0.0239074
  • resultr2+resulti2

보시다시피, 우리가 관심있는 톤은 약 250에서 피크입니다. 감지 임계 값을이 값의 약 절반으로 설정하면 (125) 감지가 발생합니다 (제곱근 값은 125보다 큼). ) 톤 시작 후 약 인덱스 1450 --- 450 샘플.

이 임계 값 (125)은 다른 경우 (이 실행의 경우)에 감지를 유발하지 않지만 해당 출력의 최대 값은 115.24이므로 잘못된 감지를하지 않으면 임계 값을 너무 줄일 수 없습니다.

임계 값을 116으로 줄이면 인덱스 1401에서 실제 (이 실행의 경우) 탐지가 발생하지만 더 많은 잘못된 경보의 위험이 있습니다.

여기에 이미지 설명을 입력하십시오


고정 길이 창 내에서만 존재 추정치를 찾는 경우 실행중인 Goertzel 필터가 더 적합합니다. 손실 / 부패 기간이없는 Goertzel을 실행하면 길이에 따라 대역폭이 변경되고 나중에 대역폭이 좁을수록 도착 시간 추정치가 악화되고 노이즈 및 임계 값 오류에 더 민감합니다.
— hotpaw2

@ hotpaw2 : 맞습니다. Goertzel을 계속 실행하기 위해 "잊어 버리는 요인"을 도입 할 수 있지만 그렇지 않으면 모든 것을 기억합니다.
— Peter K.

모든 것을 기억합니까? 재귀 형태로 구현할 수있는 FIR입니다. 여기서 무엇을 놓쳤습니까?
— Oliver Charlesworth

와이(엔)
당사 사이트를 사용함과 동시에 당사의 쿠키 정책과 개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.