Orneklenmis sinyalden sinyalin peryodunu bulma

Başlatan z, 08 Haziran 2019, 06:22:22

z

Bir sinyali ornekleyip rama attigimizi varsayin.

Amacim bu sinyalin peryodunu bulmak.

Asagida fotoda sinus sinyali ile module edilmis digital bir sinyal gorulmekte.

Islemcime bu sinyalin 1 peryodunu getirmesini istesek ne yapacagiz?

Kucuk bir jitter oldugunu ve sinus sinyalin her tam peryodunun bir onceki ya da bir sonraki period verilerinden cok az farkli oldugunu da goz onunde bulundurun.



Not: fotoda 1 period yazdigim yerde hata yamisim, bu yarim period olacakti.

Veriler icerisindeki en uzun 1 ya da 0 suresini bulurum daha sonra bu degere mesela %98 yaklasan iki aralik benim peryodumdur cevabindan daha guzel bir cevap ariyorum.
Bana e^st de diyebilirsiniz.   www.cncdesigner.com


z

Bana e^st de diyebilirsiniz.   www.cncdesigner.com

devrecii

#3
.

FullMetal

Yukarıdaki şekilden çok fazla birşey çıkaramadım, sanırım böyle birşey sorulmuyor ve muhtemelen birçok kişi biliyordur yinede yazmak istedim.

Bazen sinyallerin sadece frekans incelemesi yerine zaman-frekans incelemesi gerekir. Davul ve keman sesinden oluşan bir müzikte; müziğin Fourier ile sadece davul ve keman sesi içerdiğini anlayabilirken, Wavelet ve STFT ile müzikte davul ve kemanın ne zaman çalındığınıda anlayabiliriz. Fourier ile örnekteki frekans bileşenlerini buluruz ama zaman bilgisi alamayız. Örnekte nerede aranılan frekanslı bir işaret olduğunu STFT yada Wavelet ile bulabiliriz. STFT veya Wavelet konuya dair bir teknik, yapılan işleme zaman frekans işaret analizi (Time-Frequency Signal Analysis) denir.

z

Fotosunu verdigim sinyal pwm sinyali gibi bir sey. Sinusel modulasyon yapilmis.
Bana e^st de diyebilirsiniz.   www.cncdesigner.com

devrecii

#6
Önceki mesajda , sinyalin dijital oldunu düşünmeden yazışım.

8 tane çizgiyi toplayıp bir genlik bulabiliriz daha fazla da olabilir. Ve bu sayede sinyal yükseliyormu alçalıyormu bulbiliriz.

int  Kontrol=0,Toplamonceki=0,Peryot=0;

for(int A=0;A<Hafiza;A++)
  {

    Toplamonceki=Toplam; 
    Toplam+=mem[ A ];
    if(A>7) 
    {
    Toplam-=mem[ A - 8 ];
    if(Kontrol==0) { if(Toplam>Toplamonceki) { Kontrol=1;  }  } ///rise
    if(Kontrol==1) { if(Toplam<Toplamonceki) { Kontrol=2; Peryot=A; }  } ///fall
    if(Kontrol==2) { if(Toplam>Toplamonceki) { Kontrol=3;   }  } ///rise
    if(Kontrol==3) { if(Toplam<Toplamonceki) { Kontrol=4;  Peryot=A-Peryot;  break; }  } ///fall  
   }

  }


E

z

Fonksiyona buffer adresini verecegiz. Tum yorumlari rutin yapacak. Ben sinyalin kac bit oldugunu vs hic bir sey vermeyecegim.
Bana e^st de diyebilirsiniz.   www.cncdesigner.com

devrecii

Geniş bir frekans aralığnda ölçüm yapabilir bu verdiğim kod.

Fakat frekans çok değişirse  eğer , o değerin de değişmesi gerekir. 

Elinde resim değil de hex data varsa bir deneyebilirim.

OptimusPrime

LPF den sonra elinde sadece module eden sin sinyali kalir. Bundan sonra sifir gecisine bakarak period bulabilirsin.
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 ||

yas

Alıntı yapılan: OptimusPrime - 10 Haziran 2019, 15:36:35LPF den sonra elinde sadece module eden sin sinyali kalir. Bundan sonra sifir gecisine bakarak period bulabilirsin.
+1
Şekilde sıfır geçişin gerçekleştiği yer pwm iş gücü olarak en düşük çevrimin olduğu yani en çok boşluğun olduğu aralık sinyal sıfırdan sonra yükselmeye başladıkça aralık giderek azalmakta, aralığın artıp maksimuma ulaştığı daha sonra tekrar artmaya başladığı nokta alternasın döndüğü nokta zaman başlangıcı. @z hocam yalnız bu sinyal sinüsoldal bir sinyal ise periyodun süresi şekilde gösterdiğiniz aralığın 2 katı olacaktır. Çünkü ilk iki sıfır geçiş arasındaki süre 1 alternasın süresine denk gelecektir.