Bir sinyali yumuşatmanın bu basit yöntemi için teknik bir terim var mı?


26

Öncelikle, DSP'ye yeniyim ve bu konuda gerçek bir eğitimim yok, ancak bir ses görselleştirme programı geliştiriyorum ve bir FFT dizisini tipik bir frekans spektrum görselleştirmesinde olduğu gibi dikey çubuklar olarak temsil ediyorum.

Karşılaştığım sorun, FFT değerlerini doğrudan haritalandırdığımda hoş bir görsel çıktı oluşturmak için ses sinyali değerlerinin çok hızlı değişmesiydi:

görüntü tanımını buraya girin

Bu yüzden sonucu "düzeltmek" için değerlere basit bir fonksiyon uygularım:

// pseudo-code
delta = fftValue - smoothedFftValue;
smoothedFftValue += delta * 0.2; 
// 0.2 is arbitrary - the lower the number, the more "smoothing"

Başka bir deyişle, şu anki değeri alıyorum ve en son değeriyle karşılaştırıyorum ve daha sonra bu deltanın bir kısmını son değere ekliyorum. Sonuç şöyle görünür:

görüntü tanımını buraya girin

Yani sorum şu:

  1. Bu, bir terimin zaten var olduğu köklü bir düzen veya işlev midir? Öyleyse, terim nedir? Yukarıdaki "pürüzsüzleştirmeyi" kullanıyorum, ancak bunun DSP'de çok özel bir şey ifade ettiğini ve doğru olmayabileceğini biliyorum. Bunun dışında bir hacim zarfı ile ilişkili görünüyordu, ama aynı şey değildi.

  2. Bakmam gereken çözümlerle ilgili daha iyi yaklaşımlar veya daha fazla çalışma var mı?

Zaman ayırdığınız için teşekkür ederiz ve bu aptalca bir soru ise özür dileriz (buradaki diğer tartışmaları okuyun, bilgimin göründüğünden daha düşük olduğunu biliyorum).


1
Şimdi düzeltilmiş FFT alıp onu ters FFT ile alırsanız ne elde edeceğinizi merak ediyorum.
user253751

İlk cevabı farklı bir sırayla yapmak daha kolay olur mu? current_value = current_value * bozunma; if (new_value> current_value) {current_value = new_value; }
Richard Forster

@ immibis Bu benim anlayışıma bir yankı olmalı. Yanlışsam düzelt.
Andreas

Tabii ve bir optimizasyon derleyici aynı uygulamayı üretecektir. Önemli nokta (current_value * decay) <new_value <current_value olduğunda doğru sonucu elde etmektir.
Richard Forster

2
Bu soruyu gerçekten beğendim. Kazara birkaç şeyi deneyen birinin kendilerini muazzam bir bilgi ağacının dibinde keşfettiği kişilerden biridir (özellikle Sonsuz Dürtü Tepkisi filtreleri). Bu arada, zaten ağaca tırmanma insanlar onlar zaten ... dalları arasında keşfettim tüm güzel şeyler tanımlayabilir
DrMcCleod

Yanıtlar:


37

Uyguladığınız şey, bazen sızdıran bir entegratör adı verilen tek kutuplu bir alçak geçirgen filtredir . Sinyalinizde fark denklemi var:

y[n]=0.8y[n1]+0.2x[n]

burada giriş (düzleştirilmemiş çöp kutusu değeri) ve düzleştirilmiş çöp kutusu değeridir. Bu, basit, düşük karmaşıklıkta bir düşük geçişli filtre uygulamanın yaygın bir yoludur. Önceki cevaplarda daha önce birkaç kez onlar hakkında yazdım; bkz [1] [2] [3] .y [ n ]x[n]y[n]


4
Bunun için çok teşekkürler. Yani, çok yararlı. Tek başıma googling, DSP konusunda denizde kaybolmak gibidir. Sadece aranacak birkaç terim olması bana kavrayacak bir şey verir.
Michael Bromley

3
Merak ediyorum. OP'nin bu filtreyi, frekans alanındaki tek tek kutulardaki bir dizi değere uyguladığını düşünüyorum. Zaman domenindeki bir seri numuneye normal bir düşük geçiş uygulanır. Etki aynı mı (sanmıyorum çünkü yüksek frekanslı parçalar hala sinyalde, fakat… yoğunluğu daha yavaş değişiyor mu?)? Olmazsa, filtrenin zaman dilimindeki sinyale gerçekten ne yaptığını açıklayabilir misiniz?
Jonas Schäfer

3
@JonasWielicki Bence amaç, her bir çöp kutusu değerini düzgünleştirmektir, böylece çok hızlı bir şekilde değişmez. ayrıca, düşük geçişli filtre (cevapta açıklandığı gibi), alanından bağımsız olarak herhangi bir zaman serisine uygulanabilir (zaman veya sıklık veya başka bir şey).
Arpit Jain

@arpitjain Bunu anlıyorum. Sadece bunu yaparken zaman alanını nasıl etkilediğine dair bir anlayış olup olmadığını bilmek zorundayım (mutlaka sizin tarafınızdan, OP veya cevaplayıcı tarafından değil).
Jonas Schäfer

@JonasWielicki İşlem, frekans alanındaki bir evrişimdir, bu nedenle zaman alanındaki bir çarpıma (karşılık gelen (ters) Fourier dönüşümlerinin) dönüşür.
MBaz

17

Uyarı: bazı tarihler, eski yazılar (onları seviyorum) ve delikli kartlar dahil!

bir=0.2

y(n)=y(n-1)+bir[x(n)-y(n-1)],
y(n)=birx(n)+(1-bir)y(n-1).

Yukarıdaki ilk sürüm daha az doğaldır, ancak bir çarpımdan kaçınır ve bir şekilde daha verimlidir. Her iki formül de doğrusal , nedensel ve sonsuz bir dürtü yanıt filtresi verir . Hikaye Poisson, Kolmogorov-Zurbenko Adaptif Filtreler , Brown (Envanter Kontrolü İçin İstatistiksel Tahmin. McGraw-Hill, 1959), Holt (1957) ve Winters (1960) 'a gidiyor . Literatürde farklı isimler altında bilinen özyinelemeli bir filtre şeması olarak uygulanmaktadır :

  • birinci dereceden üstel ortalama alçak geçirgen filtre,
  • üstel ortalama,
  • üstel yumuşatma ,
  • Üstel hareketli ortalama (EMA),
  • üstel ağırlıklı hareketli ortalama (EWMA),
  • Kahverengi Basit (doğrusal) Üstel Düzeltme (bazen SES olarak adlandırılır),
  • ARIMA (0,1,1) modeli.

Addaki "üstel", üstel bir çürüme örnekleyen geometrik ilerlemeye olan dürtü tepkisi ile ilgilidir: .h[n]=(1-bir)u[n]birn

Tarihsel bir not için, Robert G. Brown ve Arthur D. Little, bu yöntemi 1956'da , görünüşte tütün endüstrisi için talebi tahmin etmek için Üstel düzeltme işleminde kullandı . Aptallar (veya Geliştiriciler) için Tahmin Yapan Holt-Winters - Bölüm I'de biraz daha fazla tarih ve açıklama bulunabilir . Peter Zehna , 1966 üstel yumuşatma ile ilgili bazı açıklamalar bölümünde eleştirel bir derleme sunuyor . Operasyon Araştırma ve Yönetim Bilimi Ansiklopedisinde R. Brown'ın bir bölümü (Google kitapları) , tarihin 1944'e kadar uzanıyor, okunabilir sayfalar burada yeniden üretiliyor:

Üstel düzeltme, s.  205, Yöneylem Araştırması ve Yönetim Bilimi Ansiklopedisi

Üstel düzeltme, s.  206, Yöneylem Araştırması ve Yönetim Bilimi Ansiklopedisi

Pek çok yöntem, verilerin bir eğilim veya mevsimsellik olması durumunda geçerliliği olmayan bu düzleştirmeyi genişletir. Bunlardan bazıları çift veya üçlü üssel yumuşatma ve Holt-Winters filtreleri olarak bilinir .

Ayrıca şunları kontrol edebilirsiniz: Bu “basit filtre” nasıl çalışır?


1
Teşekkürler, bu mükemmel. Daha önce de belirtildiği gibi, bunun için tamamen yeniyim, bu nedenle cevabınızın bir kısmı tamamen takdir etmem için daha fazla araştırma yapacak, ama kesinlikle sorumu ve sonra bazılarını cevaplıyor. Diğer, daha önce cevap değil, bu şekilde kabul tabii layık ait de cevap.
Michael Bromley

1
Küçük düzeltme, Kışlar 1 (960) Kışlar olmalıdır (1960) Sanırım
SGR

9

Bakmam gereken çözümlerle ilgili daha iyi yaklaşımlar veya daha fazla çalışma var mı?

Ses ölçerlerin normal yaklaşımı "kayıp bir tepe dedektörü" dür.

if new_value > current_value
  current_value = new_value;
else
 current_value = current_value * decay;  

Bu, sinyaldeki herhangi bir yeni veya en yüksek noktaya veya geçici olaya hemen tepki verir ancak bir süre daha devam eder, böylece çok daha az telaşlı bir görüntü oluşturur. Çürüme, 0 ile 1 arasında sabit olmalıdır. Çubukların ne kadar çabuk yapıldığını ve 1'in asla olmamasını kontrol eder.


Bunun kolejde yaptığım bir ödevle benzerlik gösterdiğini, çok kalaylı bir MIDI'nin (önceki bir ödevde oluşturulmuş) çok güçlü bir MIDI'nin (önceki bir ödevde oluşturulmuş) üçgenleri olan (tamamen dikdörtgen) nota sinyallerini üçgen biçiminde sarsmasıyla (ve ölçeklendirmek için ölçeklendirilmesiyle) geliştirildiğini unutmayın. Çok keskin bir şekilde hızla yükselen (hemen olmasa da) ve daha sonra yavaş yavaş çürüyen, “doğal olarak” ölen keskin bir nota üretmek için yavaş yavaş çürüyen bir sinyal. Şarkının sesindeki büyük gelişme (bu durumda Fur Elise).
KRyan

Sanırım new_valuedaha büyükse saklamak istersinizcurrent_value * decay
user276648

6

ABD DoD müteahhit çevrelerinde, bu özel filtreye genellikle "alfa filtresi" denir, çünkü geleneksel olarak "alfa" olarak adlandırılan bir parametre ile tanımlanabilir.

Doğrudan bir simpe analog RC düşük geçiş filtresine benzer.

Son derece basittirler, ciddi kısıtlamaları vardır, ancak sorunlu alanlarından uzak durursanız işi halledebilecekleri daha karmaşık (ve karmaşık!) Filtrelere göre yadsınamaz bir avantaja sahiptirler.


3

Diğer cevaplarda belirtildiği gibi, bu bir çeşit sonsuz dürtü yanıtı (IIR) filtresi olan bir Tek Kutuplu Özyinelemeli filtredir.

Bu ve diğer DSP özellikleri hakkında bilgi edinmek için harika bir kaynak Steven W. Smith'in Dijital Sinyal İşleme Bilimci ve Mühendis Kılavuzu : sonsuz dürtü yanıtı (IIR)

... çıkış sinyalindeki her nokta, giriş sinyalindeki değerlerin "a" katsayıları ile çarpılması, daha önce hesaplanan değerlerin çıkış sinyalinden "b" katsayıları ile çarpılması ve ürünlerin bir araya getirilmesiyle bulunur. b0 için bir değer olmadığını, çünkü hesaplanan örneğe karşılık gelir. Denklem 19-1 özyineleme denklemi ve onu kullanan filtreler özyinelemeli filtreler olarak adlandırılır. Filtreyi tanımlayan "a" ve "b" değerleri yineleme katsayıları olarak adlandırılır.

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.