Stop-band filtrem neden diğer frekansları zayıflatıyor?


12

İşte iki tonlu bir sinyal için kodum, burada daha yüksek tonu kaldırmak için bir durdurma bandı kullanıyorum ve daha sonra sinyal katsayısı ile sinyalimi katladıktan sonra frekans alanında önce (mavi) ve sonra (kırmızı) çizdim .

Bu kodu Matlab'a koyarsanız, yüksek frekansın filtre tarafından başarıyla kaldırıldığını açıkça görebilirsiniz, ancak bir nedenden dolayı daha düşük frekansın genliği yarıya indirilmiştir ve daha fazla filtre katsayısını # arttırırım, tüm eğrimi düzleştirdiğinde, bu neden oluyor? Ve bunu nasıl engelleyebilirim ki durdurma bandı dışarıya doğru yayılmaz? İşte görüntü ve kod:

resim açıklamasını buraya girin

f Örnekleme = 8000;
t Örnekleme = 1 / f Örnekleme;

t = 0: t Örnekleme: 0.005;
F0 = 1000;
F1 = 3000;

xt = günah (2 * pi * F0 * t) + günah (2 * pi * F1 * t);
ht = köknar1 (40, .25, 'dur');
yt = dönş (xt, ht);

fAxis = -4000: 125: 4000-125;

xF = fft (xt, 64);
MagXF = ileri kaydırma (abs (xF));

arsa (fAxis, MagXF);
tut

yF = fft (yt, 64);
MagYF = ileri kaydırma (abs (yF));

arsa (fAxis, MagYF, 'r')

1
Bandpass / bandstop filtreleme, doğal olarak kusurludur ve spektrumun yalnız bırakmak istediğiniz alanlarını daima etkiler. Canavarın doğası bu.
Daniel R Hicks

1
Hmm ... buna karşı koymanın yolları var mı? Veya daha uygun olabilecek nispeten basit bir filtre daha? Çentik filtreleri hakkında çok şey bilmiyorum ama gerçekten dar bant durdurma filtreleri olduklarını ve Matlab'ın kendileri için komutları olduğunu biliyorum.
Zaubertrank

2
Dediğim gibi, doğal. Bir filtre tasarlamak, her zaman bazı parametreleri başkalarının pahasına (ve masrafları pahasına) optimize etmek açısından bir değiş tokuştur.
Daniel R Hicks

Yanıtlar:


12

Filtrelerin frekans yanıtlarında her zaman doğal bir "yuvarlanması" vardır, çünkü mükemmel bir dikdörtgen işlev olan bir geçiş bandını pratik olarak gerçekleştiremezsiniz. Düşük geçişli bir filtre için, frekans yanıtınızın büyüklüğünün -3dB'ye düştüğü noktaya geçiş bandı denir ve ötesindeki her şeye durdurma bandı denir (teknik olarak, köşe frekansının ötesindeki her şey, ancak köşe frekansı -3dB seviyesi). Frekans cevabınızın geçiş bandının ötesine ne kadar yavaşladığı filtre uzunluğuna bağlıdır.

Filtrenizin frekans yanıtına bakarsanız ht, 1000 Hz'de -6dB'ye düştüğünü göreceksiniz:

resim açıklamasını buraya girin

Dolayısıyla, filtrenizden sonra gücün 6dB düştüğü mantıklıdır, ki bu şekilde şekilinizde genlikte yarıya inmek olarak görürsünüz.

fir1Kullandığınız işlevin belgelerine baksaydınız, bunu da fark ederdiniz (benimkini vurgulayın):

B = fir1(N,Wn)Nbirinci dereceden bir lowpass FIR dijital filtre tasarlar ve filtre katsayılarını uzunluk N+1vektörü olarak döndürür B. Kesim frekansı Wn arasında olmalıdır 0 < Wn < 1.0ile 1.0 yarısı örnek tekabül etmektedir. Filtre Bgerçektir ve doğrusal faza sahiptir. Filtrenin Wn'deki normalleştirilmiş kazancı -6 dB'dir.

Şimdi, bir dikdörtgene oldukça yaklaşan yanıtlarla daha keskin filtreler oluşturmak için, kararlılıkla ilgili kendi sorunlarıyla birlikte gelen IIR filtreleri kullanmanız gerekir, ancak kesinlikle bir seçenek. Çok keskin köşeler veren ayrık form 2, ikinci dereceden bölüm IIR filtrenin uygulanması hakkında bazı fikirler için cevabımı burada görebilirsiniz . Örnek bir bant geçiren filtre içindir, ancak burada kullanılan işlevler için belgeleri okuyabilir ve düşük geçişli bir sürümü kendiniz uygulayabilirsiniz.


1

Bir filtrenin, bir sinyalin filtre geçişinin hemen içinde mi yoksa hemen dışında mı olduğuna "karar vermesi" zaman alır. Çözümlerden biri, filtre geçişini, iki test sinyalinizin arasındaki gibi herhangi bir ilgili sinyalden uzaklaştırmaktır; burada, test durumunda, kusurlu bir kararla deforme edilecek çok az sinyal vardır.


0

kullanım

ht = fir1(40,.5,'stop');

bunun yerine, F0'da çok düşük zayıflama ve F1'de çok yüksek zayıflama olacaktır.

resim açıklamasını buraya girin

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.