Komentáře
- Jaký software používáte? Nebo to musíte udělat ručně? Všimněte si, že vaše specifikace jsou velmi obecné a z tohoto důvodu je možné použít mnoho metod.
- pomocí MATLABu, ale ne pouze s funkcemi,
- Takže nemůžete používat žádné funkce nástroje pro zpracování signálu?
- Ne, nemohu použít žádnou z funkcí z pole nástroje pro zpracování signálu.
Odpověď
Váš filtr je velmi nedostatečně specifikován, takže předpokládám, že váš návrh má být velmi základní. Velmi základní metodou by bylo jednoduše zkrátit a posunout impulzní odezvu ideálního dolnoprůchodového filtru s mezní frekvencí $ \ omega_c = 2 \ pi f_c / f_s = 0,4 \ pi $ (kde $ f_s $ je vzorkovací frekvence):
$$ h_ {ideal} (n) = \ frac {\ sin (\ omega_c n)} {\ pi n} $$
Upozorňujeme, že protože váš filtr musí být příčinný, je třeba posunout a zkrátit ideální impulsní odezvu tak, aby byla symetrická s ohledem na její maximum:
$$ h (n) = \ frac {\ sin (\ omega_c (n-10))} { \ pi (n-10)}, \ quad n = 0,1, \ ldots, 20 \ tag {1} $$
Rovnice (1) vám poskytne 21 filtračních koeficientů $ h (n) $ kauzálního FIR filtru přibližujícího ideální odezvu nízkoprůchodového filtru. Pořadí filtrů je 20.
Jednoduchý kód Matlab / Octave může vypadat takto:
n = -10:10; omc = 0.4*pi; % normalized cut-off frequency in rad h = sin(omc*n)./(pi*n); % impulse response h(11) = omc/pi; % correct NaN value at n=0 H = fft(h,1024); % complex frequency response f = 1000/1024*(0:512); % FFT frequency grid up to fs/2 plot(f,abs(H(1:513))); % plot magnitude of frequency response
Komentáře
- @farhan: Jste ' vítáni! Pokud si myslíte, že byla vaše otázka uspokojivě zodpovězena, můžete ji přijmout kliknutím na tlačítko ' přijmout ' vedle odpovědi.
- existují možnosti aktivního a nejstaršího, žádná možnost nepřijmout, kde
- mi můžete pomoci, pokud bych chtěl nakreslit filtr pomocí obdélníkového okna?
- @farhan : V levé horní části odpovědi je ' zaškrtnuto. Co máte na mysli přesně tím, že " nakreslíte filtr pomocí obdélníkového okna "? Vytvořit graf jeho frekvenční odezvy?
- Ano, opravdu chci ten kód