Berikut adalah kode saya untuk sinyal dua-kencang, di mana saya menggunakan stop-band untuk menghapus nada yang lebih tinggi dan kemudian merencanakan sebelum (berwarna biru) dan setelah (berwarna merah) di domain frekuensi setelah menggabungkan sinyal saya dengan koefisien filter. .
Jika Anda memasukkan kode ini ke Matlab, Anda dapat dengan jelas melihat bahwa frekuensi yang lebih tinggi telah berhasil dihapus oleh filter, namun untuk beberapa alasan amplitudo dari frekuensi yang lebih rendah telah dipotong dua, dan semakin saya meningkatkan # koefisien filter, semakin ia hanya meratakan seluruh kurva saya, mengapa ini terjadi? Dan bagaimana saya bisa mencegahnya sehingga stop-band tidak merambat ke luar? Ini gambar dan kodenya:
fSampling = 8000; tSampling = 1 / fSampling; t = 0: tSampling: 0,005; F0 = 1000; F1 = 3000; xt = sin (2 * pi * F0 * t) + sin (2 * pi * F1 * t); ht = fir1 (40, .25, 'stop'); yt = conv (xt, ht); fAxis = -4000: 125: 4000-125; xF = fft (xt, 64); MagXF = fftshift (abs (xF)); plot (fAxis, MagXF); tahan yF = fft (yt, 64); MagYF = fftshift (abs (yF)); plot (fAxis, MagYF, 'r')
Jawaban:
Filter selalu memiliki "roll-off" yang melekat dalam respons frekuensi mereka, karena Anda tidak bisa secara praktis mewujudkan pass-band yang merupakan fungsi persegi panjang yang sempurna. Untuk filter low-pass, titik di mana besarnya respons frekuensi Anda turun ke -3dB disebut pass-band dan semuanya di luar disebut stop-band (secara teknis, semua yang berada di luar frekuensi sudut, tetapi kami akan mengambil frekuensi sudut menjadi level -3dB). Seberapa cepat respons frekuensi Anda melemahkan melampaui pass-band tergantung pada panjang filter.
Jika Anda melihat respons frekuensi filter
ht
Anda, Anda akan melihat bahwa itu turun ke -6dB pada 1000 Hz:Jadi masuk akal bahwa daya turun sebesar 6dB setelah penyaringan, yang Anda lihat pada gambar Anda sebagai separuh dalam amplitudo.
Jika Anda telah melihat dokumentasi untuk
fir1
fungsi yang Anda gunakan, Anda akan menyadari ini juga (penekanan milik saya):Sekarang untuk membuat filter yang lebih tajam, dengan respons yang mendekati kotak, Anda harus menggunakan filter IIR, yang datang dengan sejumlah masalah stabilitas, dll., Tapi jelas merupakan pilihan. Anda dapat melihat jawaban saya di sini untuk beberapa ide tentang penerapan filter IIR bagian 2 bentuk diskrit yang memberikan sudut yang sangat tajam. Contohnya ada untuk filter band-pass, tetapi Anda dapat membaca dokumen untuk fungsi yang digunakan di sana dan mengimplementasikan versi low-pass sendiri.
sumber
Dibutuhkan waktu untuk filter untuk "memutuskan" apakah sinyal hanya di dalam atau di luar transisi filter. Salah satu solusinya adalah dengan hanya memindahkan transisi filter dari sinyal apa pun, seperti setengah di antara dua sinyal uji Anda, di mana, dalam kasus pengujian Anda, hanya ada sedikit sinyal yang terdistorsi oleh keputusan yang tidak sempurna.
sumber
Menggunakan
sebagai gantinya, dan Anda akan memiliki redaman sangat rendah di F0, dan atenuasi sangat tinggi di F1.
sumber