Oto mój kod dla dwutonowego sygnału, w którym używam pasma stop, aby usunąć wyższy ton, a następnie narysowałem przed (w kolorze niebieskim) i po (w kolorze czerwonym) w dziedzinie częstotliwości po splotie mojego sygnału ze współczynnikami filtra .
Jeśli umieścisz ten kod w Matlabie, zobaczysz wyraźnie, że wyższa częstotliwość została skutecznie usunięta przez filtr, ale z jakiegoś powodu amplituda niższej częstotliwości została zmniejszona o połowę, a im bardziej zwiększam # współczynniki filtra, im bardziej spłaszcza całą moją krzywiznę, dlaczego tak się dzieje? Jak mogę temu zapobiec, aby pasmo stop nie rozprzestrzeniało się na zewnątrz? Oto obraz i kod:
fPróbkowanie = 8000; tSampling = 1 / fSampling; t = 0: t Próbkowanie: 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)); wykres (fAxis, MagXF); czekaj yF = fft (yt, 64); MagYF = fftshift (abs (yF)); wykres (fAxis, MagYF, 'r')
Odpowiedzi:
Filtry zawsze mają nieodłączne „odchylenie” w odpowiedzi częstotliwościowej, ponieważ praktycznie nie można zrealizować pasma przepustowego, które jest idealną funkcją prostokątną. W przypadku filtra dolnoprzepustowego punkt, w którym wielkość twojej odpowiedzi częstotliwościowej spada do -3dB, nazywa się pasmem pasmowym, a wszystko poza nim nazywa się pasmem stopu (technicznie wszystko poza częstotliwością narożną, ale weźmiemy częstotliwość narożna na poziomie -3dB). To, jak szybko twoje pasmo przenoszenia tłumi się poza pasmem przepustowym, zależy od długości filtra.
Jeśli spojrzysz na pasmo przenoszenia filtra,
ht
zobaczysz, że spada on do -6dB przy 1000 Hz:Ma więc sens, że moc spada o 6 dB po filtrowaniu, co widać na rysunku jako połowę amplitudy.
Gdybyś przejrzał dokumentację
fir1
używanej funkcji, również byś to zauważył (moje wyróżnienie):Teraz, aby stworzyć ostrzejsze filtry, z odpowiedziami zbliżającymi się do prostokąta, będziesz musiał użyć filtrów IIR, które mają wiele problemów ze stabilnością itp., Ale zdecydowanie opcja. Tutaj możesz zobaczyć moją odpowiedź na kilka pomysłów dotyczących implementacji filtru IIR sekcji dyskretnej 2, drugiego rzędu, który daje bardzo ostre rogi. Przykładem jest filtr pasmowoprzepustowy, ale możesz przeczytać dokumenty dotyczące używanych tam funkcji i samodzielnie wdrożyć wersję dolnoprzepustową.
źródło
Filtr potrzebuje czasu, aby „zdecydować”, czy sygnał jest tylko w środku, czy poza przejściem filtra. Jednym z rozwiązań jest po prostu przesunięcie przejścia filtra od dowolnego interesującego sygnału, na przykład w połowie odległości między dwoma sygnałami testowymi, gdzie w twoim przypadku testowym jest bardzo mało sygnału do zniekształcenia w wyniku niedoskonałej decyzji.
źródło
Posługiwać się
zamiast tego będziesz miał bardzo niskie tłumienie w F0 i bardzo wysokie tłumienie w F1.
źródło