EndPoint Detection Algoritması

Başlatan Mucit23, 19 Kasım 2019, 20:30:47

OptimusPrime

#15
 :du:
Bana mantikli geldi. (yeterli islem gucu varsa ve dalga sekli hep ayni ise)
Radar da boyle calisiyor kabaca  :P
https://donanimveyazilim.wordpress.com || Cihân-ârâ cihân içredir ârâyı bilmezler, O mâhîler ki deryâ içredir deryâyı bilmezler ||

muhittin_kaplan


OptimusPrime

https://donanimveyazilim.wordpress.com || Cihân-ârâ cihân içredir ârâyı bilmezler, O mâhîler ki deryâ içredir deryâyı bilmezler ||

muhittin_kaplan

yok pek öyle değil. Ama mantıklı, bir matris oluştur bununla karşılaştır. (yazalım bir tarafa)

OptimusPrime

Dogrudur. Belkide 70 lerde 80 lerde boyledi sonra daha verimli seyler bulundu vs vs.  :du:
Mantik su idi hatirladigim. Antenden gonderilen zaten belirli bir patern. Donen isareti bu patern ile konvolusyona tabi tutuyor ve islem sonucu belli bir degeri asarsa aha birsey buldum diyordu. Tabi bu arada frekans kaymasina ve anten acisina bakiyorsa nerede hangi yukseklikte ve hizda oldugunu hesaplayabiliyordu.
https://donanimveyazilim.wordpress.com || Cihân-ârâ cihân içredir ârâyı bilmezler, O mâhîler ki deryâ içredir deryâyı bilmezler ||

Mucit23

#20
Selamlar tekrardan

Endpoint Detection için bir takım çalışmalar yaptım. Şuanda çok basit bir algoritma ile stabil halde ilerleyen bir sinyalde oluşan bir gürültünün başlangıcı ve bitişini bulabiliyorum.

Örneğin aşağıdaki gibi.



Tek bir sinyalde güzel çalışıyor fakat birden fazla buna benzer sinyal başlangıcı varsa bunları tespit etmek için düzgün bir algoritma yürütemedim. Örnek veriyorum aşağıdaki gibi 5 farklı sinyalin başlangıç ve bitiş noktalarını ayrı ayrı tespit etmem lazım.



Ben ilk başta sinyalin tamamının enerjisini buluyorum. Sonra örneğin sıralı olarak 10 tane örneğin ortalamasını bulup sinyalin enerjisinden yola çıkıp başlangıç ve bitişten tarayarak ve diferansiyel olarak enerjiden farkına bakıp başlangıç ve bitiş noktalarını bulmaya çalışıyorum. Eğer sinyal düzgün ise sıkıntı yok fakat birden fazla harmonik varsa düzgün çalışmıyor.

Böyle bir sinyalde başlangıç ve bitiş noktalarının tespiti için nasıl bir yöntem izlenebilir?

@OptimusPrime Senin vermiş olduğun makale dahil birçok makaleye baktım. Verdikleri algoritmaları inceledim ama sanki hiçbir benim örnekte çalışmayacak gibi. Anlatılan mantık hala kafama yatmadığından oturdum kendi algoritmamı yazdım.

Düzgün bir alogirtma oturtsam çalışacak gibi. Tavsiye verebilecek olan varmı?

Edit OG, görünmeyen resimler

OptimusPrime

@Mucit23
Alıntı YapBen ilk başta sinyalin tamamının enerjisini buluyorum. Sonra örneğin sıralı olarak 10 tane örneğin ortalamasını bulup sinyalin enerjisinden yola çıkıp başlangıç ve bitişten tarayarak ve diferansiyel olarak enerjiden farkına bakıp başlangıç ve bitiş noktalarını bulmaya çalışıyorum. Eğer sinyal düzgün ise sıkıntı yok fakat birden fazla harmonik varsa düzgün çalışmıyor.
???

Bu ne demek?  :)

Sinyalin, sesin baslangic ve bitisini tesbit etmek icin kullanilan enerji hesabina cok uygun. Kendine belli bir pencere araligi belirle ve o aralikta surekli ilerleyerek enerji hesabi yap.

Veya yine ayni pencere icerisinde sifir gecis say.
https://donanimveyazilim.wordpress.com || Cihân-ârâ cihân içredir ârâyı bilmezler, O mâhîler ki deryâ içredir deryâyı bilmezler ||

Mucit23

#22
Cümle biraz uzun olmuş yeni farkettim. Aklım hala kodlarda ondan oluyor  ;D

Ben sinyalin tamamının enerjisini hesaplıyordum. Bunun içinde rms enerji formülünü kullanmıştım.



Bunu işlemlerin en başında yapıyorum. Pencere aralığı dediğinizi tam anlayamadım. Ben baştan sona bütün sinyali tarıyorum. Pencere içerisinde ilerlerken sürekli enerji hesabı yap demişsiniz. Bunu kafamda canlandıramadım. Biraz daha açık anlatabilir misiniz?

OptimusPrime

https://donanimveyazilim.wordpress.com || Cihân-ârâ cihân içredir ârâyı bilmezler, O mâhîler ki deryâ içredir deryâyı bilmezler ||

Mucit23

Teşekkürler  :)  Sesli düşüneceğim. Yanlışım varsa düzeltin.  Sinyalin en başta enerjisi hesaplanır. Sonra sinyali baştan sona tararken 100 adet örnek için moving average işlemi uygulanır. Tabi muhtemelen ham değerleri movin average'ye göndermeden önce mutlağını almak gerekecek. Sinyali ileri doğru tararken movin average değeri Enerjiden artarak uzaklaşıyorsa sinyal başlangıcı, azalarak yaklaşıyorsa sinyal bitişi diyebiliriz. Bunu deneyeceğim.

OptimusPrime

Oyle degil.

Diyelimki 1000 adet ornegin var. N adet orneklikde pencere sectin. Ilk N adet icin enerjiyi hesapladin yani 0 dan N-1 e kadar. Simdi bunu 1 adim ileri goturerek yeniden hesplayacaksin yani 1 den N e kadar. Bu pencere boyle 1000 adet ornegin sonuna kadar kayarak gelecek. Bu yeni olusan dizinin boyutu 1000-N olacak haliyle. Bu iki diziyi ust uste cizdirirsen matlab efendide (basina ve sonuna N/2 kadar 0 ilave ederek), baslangic ve bitis noktalarinda ani ziplamalar goreceksin. Buraya sadece bir limit koyman gerekecek. Yani bu limitin altinda ve ustunde olusu senin baslangic ve bitis noktalarini gosterecek.

Kabaca makalede anlatilan ses algilama (baslagic ve biris noktalari) bu sekilde calisiyor .
https://donanimveyazilim.wordpress.com || Cihân-ârâ cihân içredir ârâyı bilmezler, O mâhîler ki deryâ içredir deryâyı bilmezler ||

Mucit23

Mantığı anladım ama bu çok yavaş olmaz mı?. Benim ses datalarım çok uzun. fs=44100 Ona göre düşünün işte. ::op


OptimusPrime

:)
Enerji hesabinda karekok almana ve bolmene gerek yok. Sadece karelerini alip topla. Bu seni baya hizlandirir. Donanimsal hizlandiricilarin varsa onlarida ac.
https://donanimveyazilim.wordpress.com || Cihân-ârâ cihân içredir ârâyı bilmezler, O mâhîler ki deryâ içredir deryâyı bilmezler ||

z

Bu sinyal sabit bir ofset uzerinde degil mi? Grafiklere gore ofset 0.

Sinyalin endusuk frekansli bileseni de bellidir. Daha once elektronik olarak sinyali nasil isliyorsan oyle isle onerisinde bulunmustum.

Halen gecerli.

Ornek bir data dosyasini indirebilecegimiz bir yere koyarsan deneme yapalim.
Bana e^st de diyebilirsiniz.   www.cncdesigner.com

Mucit23

Alıntı yapılan: z - 04 Aralık 2019, 02:57:28Bu sinyal sabit bir ofset uzerinde degil mi? Grafiklere gore ofset 0.

Sinyalin endusuk frekansli bileseni de bellidir. Daha once elektronik olarak sinyali nasil isliyorsan oyle isle onerisinde bulunmustum.

Halen gecerli.

Ornek bir data dosyasini indirebilecegimiz bir yere koyarsan deneme yapalim.

Abi Buraya yükledim.
https://yadi.sk/d/Akl0gHnSGlgevQ
iki ayrı ses datası var. Bunların çıktılarını kaydettim.