Türev hesaplama


9

Bir dizi veri var (tek dizi). Bu verileri alıp çizersem, birden fazla tepe noktası olduğunu görebilirim. Ancak bir veri bölümünü yakınlaştırırsam, çok fazla gürültü olduğunu görürüm.

Çok az CPU zamanı ve enerjisi kullanarak verilerde kaç tepe noktası olduğunu tespit etmeyi seviyorum. Bu zirvelerin eğimlerini tespit etmeyi düşündüm (keskin veya pürüzsüz yükselen veya düşen olabilir) ve tepe sayısını belirlemek için eğim sayısına bakın. (Her pik için pozitif ve negatif 2 eğim)

Herhangi bir işaretçi gürültü varlığında eğimleri nasıl hesaplayabilirim?

Kod gömülü bir sisteme gidecek, bellek sınırlı yani tercihen önemli veri kopyası gerektirmeyen bir şey uygulamak istiyorum.


1
İhtiyacınız olan bir şey isteyen bir mağazada gibisiniz

2
Gürültü frekansta nispeten yüksekse, düşük geçişli verileri filtreleyebilirsiniz
Paul R

4
Verilerinizin bir veya daha fazla örnek grafiğini gönderebilir misiniz? Bu neye benzediğini görmemize yardımcı olacak. Bir sinyalin türevinin hesaplanması gürültüye karşı çok hassas olduğundan (bir yüksek geçiş işlemidir), pik tespiti genellikle türev tahmini ile yapılmaz. İlgilenebileceğiniz sinyalin özellikleri olabilir. Ayrıca, her zaman bir zirveyi doğru tespit etme olasılığı ile gerçekten ilgilenmeyen bir zirveyi yanlış beyan etme olasılığı arasında bir tutarsızlık vardır. Hangisi başvurunuz için daha önemlidir?
Jason R

2
Bir komplo üretebilirseniz, yardımcı olacaktır.
Jason R

1
Zirveleri tespit etmek istiyorsunuz, zirve tespiti için arama yapmak isteyebilirsiniz ( dsp.stackexchange.com/questions/1302/peak-detection-approach adresine bakın ).
Geerten

Yanıtlar:


1

Gürültü türüne ve sinyal türüne bağlıdır. İyi bir cevap istiyorsanız bir örnek gösterin. Ancak, genel olarak sinyali alçak geçiren filtreyi filtrelemek istersiniz. Ben olsaydım, gürültünün çoğunun yüksek frekans olup olmadığını ve çoğunlukla önemsediğim sinyalin daha düşük bir aralıkta olup olmadığını görmek için bir Fourier güç spektrumu alırdım. Eğer örtüşürlerse, ah bu hayat. Şeyler hakkında daha fazla düşünmek zorunda kalacağım.

Çoğu durumda gürültülü sinyaller için iyi olan düşük geçişli bir filtre Savitzky-Golay filtresidir. Sayısal Tarifler'de açıklanmıştır ve Python için Python Numpy Yemek Tarifleri'nde bir işlev vardır. Sadece küçük bir çekirdeğe sahip bir evrişimdir. Pencere boyutunu, piklerin genişliğini veya gürültüyü ortadan kaldıracak kadar geniş olan, ancak özelliklerden daha geniş olmayan genişliğe göre seçersiniz. Küçük olabilir, beş puan, düzinelerce, belki de daha büyük olabilir.

Ayrıca bir polinom sırası da seçersiniz - genellikle 2 veya 4 kullanırım. Sipariş 2, pencere küçük olduğunda, <10 puan olduğunda veya sıra 4'ten az ise (sinyaliniz sinüse benziyorsa) iyidir. çarpık tepe şekilleri eşleştirmede daha iyi, ancak yaklaşık 9 veya daha fazla noktaya sahip olmaktan hoşlanır. Ancak çok şey gürültünün şekline ve frekansına bağlıdır.

Yorumlarda belirtildiği gibi, türev bulmak muhtemelen en iyi strateji değildir, ancak yine de türev bulmak istiyorsanız, Savitzky-Golay filtresi bunu yapabilir - aynı anda sinyal yerine türevi yumuşatmak ve raporlamak.

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.