Witam
Jak w temacie.... Chciałbym zaimplementować na uC trzy proste filtry cyfrowe. uC to nie jakiś tam DSP uP tylko zwykła Atmega16 ale z trzema filtrami powinna sobie dać radę (nie musi filtrować w czasie rzeczywistym).
Do zaprojektowania filtrów wybrałem Simulinka a w nim DSP Blockset i Digital Filter Design ponieważ go mam i jest prosty w obsłudze, a ponadto od razu widzę jak się filtr zachowuje (charakterystyki).
I tu pojawia się mój problem. Po zaprojektowaniu filtra otrzymuje trzy wartości licznika i trzy wartości mianownika. Np. Dla filtru IIR bandpass 2giego rzędu (fs=2000, fc1=175 fc2=200) otrzymuję:
Co dalej... szukałem w pomocy ale nie znalazłem (może szukać nie umiem
). Potrzebuje teraz doprowadzić to do postaci prostego równania które mógłbym już w c zastosować
Przykład:
ale nie wiem jak (które gdzie). Przypuszczam tylko że w miejsce współczynników a[x] i b[x] trafią ilorazy liczb wygenerowanych w simulinku.
Jak w temacie.... Chciałbym zaimplementować na uC trzy proste filtry cyfrowe. uC to nie jakiś tam DSP uP tylko zwykła Atmega16 ale z trzema filtrami powinna sobie dać radę (nie musi filtrować w czasie rzeczywistym).
Do zaprojektowania filtrów wybrałem Simulinka a w nim DSP Blockset i Digital Filter Design ponieważ go mam i jest prosty w obsłudze, a ponadto od razu widzę jak się filtr zachowuje (charakterystyki).
I tu pojawia się mój problem. Po zaprojektowaniu filtra otrzymuje trzy wartości licznika i trzy wartości mianownika. Np. Dla filtru IIR bandpass 2giego rzędu (fs=2000, fc1=175 fc2=200) otrzymuję:
Numerator:
0.0378047541709
0.0000000000000
-0.0378047541709
Denominator:
1.000000000000
-1.601306765501
0.9243904916582Co dalej... szukałem w pomocy ale nie znalazłem (może szukać nie umiem
Przykład:
y[n]=b[0]*x[n]+b[1]*x[n-1]+b[2]*x[n-2]+a[1]*y[n-1]+a[2]*y[n-2]ale nie wiem jak (które gdzie). Przypuszczam tylko że w miejsce współczynników a[x] i b[x] trafią ilorazy liczb wygenerowanych w simulinku.
