Gürültüde bir ton patlamasının başlangıç ​​zamanını tahmin etmek?


14

Gürültülü bir sinyaldeki sinüzoidal ton patlamasının başlangıç ​​zamanını tahmin etmek için hangi teknikler kullanılabilir?

Ton patlamasının bilinen bir sabit frekansa (ancak bilinmeyen faza) ve çok keskin bir yükselme süresine sahip olduğunu ve hedefin başlangıç ​​zamanını yükselme süresinin yarısından daha iyi bir zamanda ve / veya tonun frekansının bir periyodunu tahmin etmek olduğunu varsayalım , Eğer mümkünse. S / N oranı çok düşükse (1'den az) tahmin teknikleri nasıl değişebilir?

Eklendi: Ton patlamasının bilinmeyen bir uzunlukta olduğunu, ancak yükselme süresinin ve frekans döneminin küçük bir katından daha uzun olduğunu varsayın.

Eklendi: Bir DFT / FFT, bir tonun çok muhtemel varlığını gösterir. Sorun, FFT penceresinde tam olarak tam olarak nerede FFT penceresinde tonun (veya aynı frekansın birden fazla ton patlamasının) başladığını veya mevcut tonun bu DFT penceresinin dışında başlatılıp başlatılmadığını belirlemektir. ek zaman etki alanı verisi.

Radar nabız algılama doğruluğu ihtiyacım olan çözünürlüğe daha yakındır, ancak tonun uzunluğu bilinmediği ve bilinen bir yükselme süresi dışında modüle edilmediğinden sadece bir kenarım var. Dar bant geçiren filtreler yükselme süresini bozar ve böylece uç varış tahmini çözünürlüğünü öldürür.


1
Gürültü hakkında bir şey varsayabilir miyiz? Hareketsiz mi? Herhangi bir dağıtım izliyor mu?
Phonon

2
Dedektörünüzden gelen yanlış alarmlar istenmiyor mu? Her nabzı doğru tespit etme olasılığı hakkında bir spesifikasyonunuz var mı? Bu, ön uç radar sinyali işlemeye (basitleştirilmiş bir versiyonu) çok benzer; gürültüye gömülü ve parametrelerini tahmin eden darbeleri bulma (muhtemelen modüle edilmiş).
Jason R

1
Bunu gerçek zamanlı mı yapmanız gerekiyor yoksa çevrimdışı bir analiz mi?
nibot

2
@ hotpaw2: Bu SO cevabına göre Goertzel algoritması hakkında ne sevmediniz ?
Peter K.

1
Goertzel algoritması ton algılaması için kullanılır, ki bu peşinde olduğunuz gibi görünür. Filtrenin çıkışı, ayarlandığı frekanstaki sinyalin "gücünün" bir tahminidir. Bir eşik seçin. Filtre çıkışı bunun üzerindeyse, bir ton algıladınız. Eşiğinizi uygun şekilde ayarlayın ve tonun başlangıcını daha erken tespit edebilirsiniz (ve ayrıca yanlış alarmlara daha eğilimli olabilirsiniz).
Peter K.

Yanıtlar:


6

Yorumlarda tartıştığımız gibi, Goertzel algoritması gürültüde bir tonu tespit etmenin olağan yoludur. Tartışmadan sonra, peşinde olduğunuz şeyin tam olarak ne olduğundan emin değilim ( başlangıç ​​zamanını istiyorsunuz ), ancak Goertzel algoritmasının sorununuza nasıl uygulanabileceği konusunda bir karışıklık var gibi görünüyor, bu yüzden yazacağımı düşündüm buraya.

Goertzel Algoritması

Goertzel algoritması, aradığınız tonun frekansını biliyorsanız ( ) ve uygun bir algılama eşiğini seçebilmeniz için gürültü seviyesi hakkında makul bir fikriniz varsa kullanmak .fg

Goertzel algoritması her zaman ONE FFT bölmesinin çıktısını hesapladığı düşünülebilir:

y(n)=eȷ2πfgnk=0nx(n)eȷ2πfgk

Burada aradığınız frekanstır.fg

Wikipedia sayfasının bunu hesaplamak için daha iyi bir yolu vardır.

İşte uygulamak için (zayıf) bir Scilab girişimi:

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

ve ile sinyali düşünün :f=0.0239074ϕ=4.4318752

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

burada sıfır ortalama, birim varyansı Gauss beyaz gürültüsüdür.ϵ(n)

Bu örnekte, ton 1001 indeksindeki sinyale giden yolun üçte birini başlatır.

Goertzel algoritmasını ile çalıştırırsak, ilk iki izini alırız.fg=f0.001

Goertzel algoritmasını ile çalıştırırsak, alt iki izini alırız.fg=f

Dört iz:

  • y f g = 0.0229074x için (mavi) ve (kırmızı)yfg=0.0229074
  • Sonuçta elde edilenresultr2+resulti2
  • y f g = 0.0239074x için (mavi) ve (kırmızı)yfg=0.0239074
  • Sonuçta elde edilen (düz çizgi) ve ilk sonuç (kesik çizgi).resultr2+resulti2

Gördüğünüz gibi, ilgilendiğimiz tonun durumu 250 civarında zirve yapıyor. Algılama eşiğini bu değerin yaklaşık olarak 125'e ayarlarsak, algılama gerçekleşir (kareköklü değer 125'ten büyükse) ) ton indeksi başladıktan sonra yaklaşık 1450 --- 450 örnek endeksinde.

Bu eşik (125) diğer durumda (bu çalışma için, zaten) bir algılamaya neden olmaz, ancak bu çıkışın maksimum değeri 115.24'tür, yanlış bir algılama almadan eşiği çok fazla azaltamayız.

Eşiği 116'ya düşürmek, 1401 dizininde gerçek durumda (bu çalışma için) algılamaya neden olur ... ancak daha yanlış alarm riski taşırız.

resim açıklamasını buraya girin


Çalışan bir Goertzel filtresi, yalnızca bir sabit uzunluklu pencerede bir varlık tahmini arıyorsanız daha uygundur. Kayıp / bozulma terimi olmayan çalışan bir Goertzel, bant genişliğini uzunluğuna göre değiştirir ve daha sonra daha dar bant genişliği, gürültü ve eşik hatalarına karşı daha hassas olan daha kötü bir varış süresi tahmini sağlar.
hotpaw2

@ hotpaw2: Doğru. Goertzel'in çalışmasını sağlamak için bir "unutma faktörü" tanıtabilirsiniz, ancak aksi takdirde her şeyi hatırlar.
Peter K.

Her şeyi hatırlıyor musunuz? Özyinelemeli olarak uygulanabilen bir FIR. Burada ne kaçırdım?
Oliver Charlesworth

@Oli: Yukarıdaki denklemine bakarsanız, bunun bitmediğini göreceksiniz. Evet, (ölçekli) bir DFT katsayısı tahmin ediyor, ancak kesinlikle FIR değil. y(n)
Peter K.
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.