Neden frekans alanındaki sinyalleri değiştirmek ve daha sonra bunları zaman alanına kurtarmak yerine bant geçirme için dijital filtreleri kullanmalıyım?


15

Sinyal işleme konusunda acemi biriyim ve bu sorunun çok geniş olabileceğini biliyorum. Ama yine de uzmanlardan ipuçları almak istiyorum.

Bana öğretildi butter(Butterworth filtresini maksimum düz büyüklük filtresi olarak adlandırmak için) vefiltfiltMATLAB'da çevrimdışı olarak EEG (elektroensefalogram) sinyallerinin bant geçiren filtrelemesi için (yani kayıt tamamlandıktan sonra) (Sıfır fazlı dijital filtreleme) işlevlerini . Bu şekilde dijital filtrenin neden olduğu kaçınılmaz "gecikmeden" kaçınabilirsiniz (yani sıfır faz filtreleme).

Sonra birisi bana fftsinyalin frekans-alan gösterimini elde etmek için neden (Hızlı Fourier dönüşümü) kullanamayacağımızı sordu ve ardından istenmeyen frekansların gücünü sıfıra ayarladı, ardından ifftfiltrelenmiş verileri zamanında kurtarmak için (Ters hızlı Fourier dönüşümü) aynı amaç için alan adı. Frekans alanındaki bu manipülasyon benim için daha basit ve makul geliyordu ve nedenini gerçekten cevaplayamadım.

Basit kullanmanın avantajları ve dezavantajları nelerdir fft/ifftBant geçiren filtreleme için yöntemi nelerdir? İnsanlar neden FIR veya IIR dijital filtreleri kullanmayı tercih ediyor?

Örneğin, fft/ifftyöntem yerleşik dijital filtrelere kıyasla spektral sızıntıya veya dalgalanmalara daha yatkın mı? Yöntem ayrıca faz gecikmesinden muzdarip mi? Karşılaştırma için bu filtreleme yöntemi için dürtü yanıtını görselleştirmenin bir yolu var mı?



Bir sinyali filtrelemek için bir FFT kullanmak kesinlikle geçerlidir, ancak dikkat edilmesi gereken birkaç şey vardır. Daha fazla bilgi için bu benzer soru / cevaba bakınız: stackoverflow.com/a/2949227/565542
sbell

5
Bunun gibi sorular Sinyal İşleme sitesi için daha uygun olabilir .
Jason R

2
Sanırım Steven W. Smith tarafından Dijital Sinyal İşleme Bilim Adamı ve Mühendis Kılavuzu'nun bir cevabı var. Bence örnek içeri - dışarı dijital filtre ile çok daha verimli olduğunu söylüyor. Ancak, frekans alanında bir tuğla filtreye sahip olabileceğiniz FFT dönüşümünü çağırmak daha uygun olduğunda, pencerenin minimum genişliği (64 örnek veya daha fazla, tam olarak hatırlamıyorum) vardır. Verimlilik tek sorun değildir. Tuğla filtre, gerçek zamanlı olarak imkansız olan gelecekten örnekleri kullanmanız gerektiğini ima eder.
Val

Teşekkürler, Sinyal İşleme sitesi gibi bir şey arıyordum, ancak bulamadım.
Kouichi C. Nakamura

Yanıtlar:


9

Frekans alanı işlemenin doğrudan yapılmamasının ana nedeni, dahil olan gecikmedir. Diyelim ki bir sinyalin üzerinde bir FFT yapmak için, frekans alanına dönüştürmeden önce ilk olarak tüm zaman alanı sinyalini kaydetmeniz gerekir. Ardından işleminizi yapabilir, zaman alanına geri dönüştürebilir ve sonucu oynatabilirsiniz. İki dönüşüm ve ortadaki sinyal işleme etkili bir şekilde anlık olsa bile, son giriş örneği kaydedilene kadar ilk sonuç örneğini alamazsınız. Ancak buna katlanmak istiyorsanız "ideal" frekans alanı sonuçları alabilirsiniz. Örneğin, 44100 örnek / saniyede kaydedilen 3 dakikalık bir şarkı için 8 milyon nokta dönüşümü yapmanız gerekir, ancak bu modern bir CPU'da önemli değildir.

Zaman alanı sinyalini daha küçük, sabit boyutlu veri bloklarına bölmek ve bunları ayrı ayrı işlemek, gecikmeyi bir blok uzunluğuna indirgemek cazip olabilir. Ancak bu, "kenar efektleri" nedeniyle çalışmaz - belirli bir bloğun her iki ucundaki örnekler bitişik blokların karşılık gelen örnekleriyle düzgün şekilde hizalanmaz ve sonuçlarda sakıncalı yapaylıklar oluşturur.

Bu, zaman etki alanı ile sıklık etki alanı arasında (ve tersi) dönüştürme işleminde örtük olan varsayımlar nedeniyle olur. Örneğin, FFT ve IFFT verilerin döngüsel olduğunu "varsayar"; diğer bir deyişle, aynı zaman alanı verisi blokları işlenen bloktan önce ve sonra gelir. Bu genel olarak doğru olmadığından eserler elde edilir.

Zaman alanlı işlemenin sorunları olabilir, ancak gecikmeyi kontrol edebilmeniz ve periyodik eserler üretmemesi, gerçek zamanlı sinyal işleme uygulamalarının çoğunda net bir kazanan haline getirir.

(Bu, önceki yanıtımın genişletilmiş bir sürümüdür .)


1
Düz kelimelerde ayrıntılı cevap için çok teşekkürler. Şimdi soruma göre işimin çevrimiçi veya gerçek zamanlı işlemeden ziyade çevrimdışı analiz için olduğunu söylemeliydim. Soruyu düzenleyeceğim. Demek istediğin çok açık: FFT tüm veri süresini gerektirdiğinden, kayıt tamamlanana kadar beklemelisin.
Kouichi C. Nakamura

1
Tamam, yeterince adil. Şimdi sizin için sorun olabilecek veya olmayabilecek frekans alanı filtrelemeyle ilgili bir şey daha belirteyim: Filtreler zaman alanında nedensel olmayacak . Başka bir deyişle, dürtü yanıtları hem olumlu hem de olumsuz zamana uzanır. Bunun farkında değilseniz, bunun bazı şaşırtıcı etkileri olabilir.
Dave Tweed

Teşekkürler. Wikipedia'da "Nedensel filtre" yi aradım. Tanım olarak, FFT yük vagonu zaman umurunda değil, bu yüzden nedensel olmadığını görebiliyorum. Bu doğa, onu gerçek zamanlı filtreleme için neden kullanamayacağınızı açıklıyor.
Kouichi C. Nakamura

3
@DaveTweed: 44,1 kHz'de örneklenen 3 dakikalık bir şarkıyı filtrelemek için 8 milyon noktalı FFT gerektirme iddianız yanlış. FFT tabanlı evrişim algoritmaları aslında pratikte yoğun olarak kullanılmaktadır. Bu gibi yöntemler, örtüşme kaydetmek ve üst üste ekleme bu daha ılımlı FFT boyutu (ve bu nedenle işlem gecikmesi) gereklidir, böylece kullanılır. Bu teknikler tam olarak ikinci paragrafınızın önerdiğini yapar: aralarında oluşan "kenar efektlerini" işlerken daha küçük bloklar kullanın.
Jason R

2
@DaveTweed: Kabul etmiyorum. Üst üste kaydetme ve üst üste ekleme gibi hızlı evrişim yöntemleri, doğrusal evrişimi (yani filtrenin zaman alanına uygulanması) eşdeğerdir (sayısal hassasiyete kadar). Herhangi bir türdeki sınır koşullarında, zaman alanlı işlemeye karşı performanstan ödün verilmemektedir ve sınırlı gecikmeleri, onları birçok gerçek zamanlı uygulama için hala kullanışlı kılmaktadır. Frekans alanı filtrelemenin tüm giriş sinyali boyunca büyük bir FFT gerektirdiği iddiasının yanlış olduğunu ve bu bağlamda "saf" frekans alanı işlemesi ile ne demek istediğinizden emin değilim.
Jason R

2

Frekans alanında kesinlikle "boxcar" ideal filtreleri kullanabilirsiniz. Dualite, bunun sonsuz uzunlukta samimi bir işlevle kıvrılmaya eşdeğer olduğunu söylüyor. Uzunluğu sonlu hale getirmeyle ilişkili eserleri azaltmak için, iç işlev genellikle bir pencere ile çarpılır. Hamming, Hanning (aslında von Hann), yükseltilmiş kosinüs ve diğer pencereleme tekniklerini duymuş olabilirsiniz. Evrişim, fft / ifft yaklaşımından hesaplamalı olarak daha basit olabilir, ancak cevaplar aynıdır.

Her yöntemin artıları ve eksileri olacaktır. Butterworth IIR ve vagonlar FIR. Butterworthlar muhtemelen geçiş bandında daha düzdür, ancak IIR'nin sırasına ve FIR genişliğine bağlı olarak muhtemelen daha az dik devrelerle. filtfilt'in gerçek zamanlı olarak uygulanması daha zor olacaktır.


1
Pencereleme ve blok filtrelemenin gerçekten net bir açıklaması için, RW Hamming tarafından Dijital Filtreler adlı kitaba bakın . Dover, çok çok güzel fiyatlı kullanılabilir. (Bu arada, Scott, sanırım bu pencerenin adı verilen Hamming ve von Hann, penceresini adlandırırken adını aldı.)
Photon

Ayrıca, FFT'lerle uygulanan bir vagonun tanım gereği geçiş bandında mükemmel bir şekilde düz olduğundan eminim. Butterworth filtresinin "maksimum düz" olduğunu söylediğimizde, sadece nedensel filtreler bağlamında konuştuğumuza inanıyorum (ve Wiki, buna rağmen, bir Butterworth'tan daha düz bir ters Chebychev filtresi yapmanın mümkün olduğunu söylüyor).
Foton

1
İdeal sonsuz uzunluk için kabul edildi, ancak kesme ve pencereden sonra o kadar emin değilim
Scott Seidman

@ThePhoton Hamming / von Hann düzeltmesi için teşekkürler. Kitaplığımı evden doğru bir şekilde görselleştiremedim.
Scott Seidman

@ Photon; Hamming'in Dijital Filtreler kitabı için teşekkürler . Ona baktım ve özellikle ilköğretim öğrencileri için yazılmış gibi görünüyordu. Bir umutla aldım. :)
Kouichi C. Nakamura

0

İlgili sorular

FFT kutularını sıfırlayarak filtrelemek neden kötü bir fikirdir? /signals/6220/why-is-it-a-bad-idea-to-filter-by-zeroing-out-fft-bins

FFT sonucundaki değerler, filtreleme ile aynı mı? /signals/11487/removing-values-from-fft-result-same-as-filtering?noredirect=1&lq=1

Pencereyi neden FFT spektrumu değiştirmek yerine ters FFT yerine zaman etki alanında kullanıyoruz? Https://dsp.stackexchange.com/questions/8911/why-do-we-use-window-in-time-domain-rather -than-do-fFT-değiştirme-spektrumlu ve-t? noredirect = 1 ve lq = 1

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.