Jak w prosty sposób usunąć harmoniczne?

Jeśli masz coś do powiedzenia w sprawie LabVIEW napisz. Tutaj są tematy, których nie można uściślić do innych działów.
marwis
Posty: 22
Rejestracja: 17 paź 2008 21:29
Wersja środowiska: LabVIEW 8.5
Lokalizacja: Gdy
Kontakt:

Jak w prosty sposób usunąć harmoniczne?

Post autor: marwis »

Mam w programie swój układ mierzący częstotliwość i mam trochę kłopotu gdy w sygnale pojawiają się harmoniczne (zwłaszcza piąta). Jako że nie znam się na filtrach wypróbowałem kilka i najlepszy wydaje mi się Zero Phase Filter - pytanie tylko co to za rodzaj filtru i za co odpowiadają jego parametry wejściowe(Reverse Coefficients,Forward Coefficients)?
Awatar użytkownika
jogurt_owocowy
Posty: 1317
Rejestracja: 30 lis 2004 00:00
Wersja środowiska: LabVIEW 2015
Lokalizacja: Kraków

Re: Jak w prosty sposób usunąć harmoniczne?

Post autor: jogurt_owocowy »

Zanim zaczniesz cokolwiek filtrować, poznaj chociaż podstawy filtracji, bo inaczej to takie strzelanie na oślep.
Zero Phase Filter to - w skrócie - funkcja realizująca filtrację cyfrową w dość specyficzny sposób polegający na dwukrotnym przefiltrowaniu sygnału raz normalnie i raz "od tyłu". Sumarycznie taka operacja może być postrzegana jako pojedyncza filtracja cyfrowa z płaską charakterystyką fazową.
Reverse Coefficients i Forward Coefficients to nic innego jak współczynniki tego dwukrotnie stosowanego filtru (zwykle oznaczane, odpowiednio, jako a i b) określające wartość n-tej próbki sygnału wyjściowego na podstawie pewnej ilości (M, N) ostatnich próbek wejściowych:
Obrazek
Skąd je wziąć?
Musisz je wygenerować na podstawie pożądanej charakterystyki częstotliwościowej. I teraz zasadnicze pytanie:
Jaka ma być ta charakterystyka? Co chcesz odfiltrować od czego?
Ostatnio zmieniony 21 sie 2009 15:56 przez jogurt_owocowy, łącznie zmieniany 2 razy.
marwis
Posty: 22
Rejestracja: 17 paź 2008 21:29
Wersja środowiska: LabVIEW 8.5
Lokalizacja: Gdy
Kontakt:

Re: Jak w prosty sposób usunąć harmoniczne?

Post autor: marwis »

Dzięki za odpowiedź:) Generalnie mierzę
częstotliwość napięcia w sieci (50Hz) i chcę odfiltrować wyższe harmoniczne które mogą pojawić się w mierzonym sygnale. Wziąłem do mojego programu ten filtr z przykładu w LV i jego działanie mi odpowiada. Jest w nim podana na wejście Forward Coefficients jednowymiarowa tablica. Domyślam się że rozmiar tablicy odpowiada za liczbę próbek M, a kolejne elementy to odpowiednio współczynniki b? Jeśli dobrze zrozumiałem, do wyznaczenia współczynników można użyć Cascade To Direct Coefficients tylko że na jego wejściu tez trzeba podać takie współczynniki więc dalej nie wiem co z tym zrobić.
Awatar użytkownika
jogurt_owocowy
Posty: 1317
Rejestracja: 30 lis 2004 00:00
Wersja środowiska: LabVIEW 2015
Lokalizacja: Kraków

Re: Jak w prosty sposób usunąć harmoniczne?

Post autor: jogurt_owocowy »

Trochę za bardzo kombinujesz.
W LV masz zestaw gotowych funkcji filtrujących, na których wejścia podajesz typ filtru (dolno-, górnoprzepustowy), częstotliwość odcięcia i sygnał wejściowy, a na wyjściu dostajesz jego odfiltrowaną wersję - proste.
Z tego co piszesz w Twoim przypadku dobrym wyborem mógłby być filtr eliptyczny, który ma maksymalnie stromą charakterystykę w paśmie przejściowym. Co prawda w zamian za to jego charakterystyka jest nierównomierna, ale w przypadku pomiaru częstotliwości, gdzie amplituda ma małe znaczenie, ta wada się nie liczy.
Wrzuć na diagram funkcję Elliptic Filter i na jej wejścia podaj:
sampling freq - częstotliwość próbkowania filtrowanego sygnału filter type: Lowpass - dolnoprzepustowy, bo chcesz usunąć górne harmoniczne low cutoff freq: np. 75 Hz - częstotliwość odcięcia pomiędzy pierwszą a drugą harmoniczną order: 5 - taka wartość powinna być ok, ale możesz poeksperymentować
Podłącz swój sygnał do wejścia X i zobacz co dostajesz na wyjściu Filtered X. Może być?
Ostatnio zmieniony 22 sie 2009 17:56 przez jogurt_owocowy, łącznie zmieniany 1 raz.
marwis
Posty: 22
Rejestracja: 17 paź 2008 21:29
Wersja środowiska: LabVIEW 8.5
Lokalizacja: Gdy
Kontakt:

Re: Jak w prosty sposób usunąć harmoniczne?

Post autor: marwis »

Myślę że się nada:) Chociaż chyba nie musi być piątego rzędu (2,3 powinien być wystarczający). Dzięki za pomoc.

Jednak po przeanalizowaniu kilku filtrów najwyższą dokładność w moim programie otrzymuje z filtrem Butterworth'a i tego raczej będę się trzymał;)
Ostatnio zmieniony 22 sie 2009 19:34 przez marwis, łącznie zmieniany 1 raz.
Awatar użytkownika
jogurt_owocowy
Posty: 1317
Rejestracja: 30 lis 2004 00:00
Wersja środowiska: LabVIEW 2015
Lokalizacja: Kraków

Re: Jak w prosty sposób usunąć harmoniczne?

Post autor: jogurt_owocowy »

Jednak po przeanalizowaniu kilku filtrów najwyższą dokładność w moim programie otrzymuje z filtrem Butterworth'a
Najwyższą dokładność pomiaru częstotliwości, tak?
W jaki sposób ją potem mierzysz?
marwis
Posty: 22
Rejestracja: 17 paź 2008 21:29
Wersja środowiska: LabVIEW 8.5
Lokalizacja: Gdy
Kontakt:

Re: Jak w prosty sposób usunąć harmoniczne?

Post autor: marwis »

Tak, o częstotliwość chodziło. Najłatwiej pewnie byloby ją zmierzyć za pomocą Extract Single Tone Information , ale ja używam swojego algorytmu który wyznacza częstotl. na podstawie określonej liczby półokresów k, znanym okresie próbkowania Tp i liczbie próbek w k półokresach Mk

f=k/2*Mk*Tp Długość półokresu to liczba próbek między kolejnymi przejściami przez zero. Dokładniejszą wartość miejsca zerowego określam przez aproksymację prostej łączącej dwa najbliższe punkty przejścia przez zero. No i właśnie harmoniczne czasami tak zniekształcają sygnał, że zamiast raz w odpowiednim miejscu przechodzić przez zero, przechodzi kilka razy.
ODPOWIEDZ