logo elektroda
logo elektroda
X
logo elektroda
REKLAMA
REKLAMA
Adblock/uBlockOrigin/AdGuard mogą powodować znikanie niektórych postów z powodu nowej reguły.

MatLab - rysowanie i symulacja filtru IIR o zadanych wartościach

norton123 27 Sty 2014 22:24 2979 1
REKLAMA
  • #1 13229012
    norton123
    Poziom 1  
    Cześć, mam mały problemik.
    Mam za zadanie zrobić filtr IIR dla zadanych wartości (w matlabie).
    Dane:
    f=1000
    fs=[100 300 400] i trzeba było zrobić filtr IIR w przedziale [200 350].
    Cokolwiek to znaczy.

    Zazwyczaj robiłam to funkcjami cheb1ord oraz cheby1.
    Miałam wtedy podane
    Rs = 80;
    Rp = 5;
    Wp = 0.1;
    Ws = 0.15;

    Udało się wtedy uzyskać H i dalej jakoś szło.

    Wie ktoś jak to zrobić? Sama się już w tym wszystkim gubie...
  • REKLAMA
  • #2 13229953
    DXFM
    Poziom 20  
    norton123 napisał:

    Mam za zadanie zrobić filtr IIR dla zadanych wartości (w matlabie).
    Dane:
    f=1000
    fs=[100 300 400] i trzeba było zrobić filtr IIR w przedziale [200 350].
    Cokolwiek to znaczy.

    Za mało informacji. Co to jest f=1000? Prawdopodobnie częstotliwość próbkowania, którą przyjęło się oznaczać fs (od sampling frequency). Co to zatem jest fs? Może wektory sygnałów testowych o częstotliwościach 100, 300 i 400, którymi masz sprawdzić filtr? Masz zrobić filtr, ale nie napisałaś jaki. Z danych mogę się domyślić, że chodzi o pasmowo-przepustowy lub pasmowo-zaporowy. Dalej - nie wiadomo jaki ma być kształt ch-ki częstotliwościowej. Powiedzmy, że ma to być odpowiednik Czebyszewa typu I. Sięgamy do pomocy Matlaba:
    cheby1.
    Funkcja wymaga podania rzędu i wysokości zafalowań, których nie da się wyznaczyć z przedstawionych danych. Może należy jakoś przyjąć? No to niech będzie n=3 i R=1 (1dB). Parametr Wp może być wektorem i wówczas zostanie utworzona transmitancja filtru pasmowo-przepustowego. Jeśli jako czwarty parametr dopiszesz 'stop', to będzie pasmowo-zaporowy.
    Pamiętaj, że jako częstotliwości wpisujesz wartości unormowane do częstotliwości próbkowania, to znaczy każdą częstotliwość dzielisz przez fs/2. W Twoim przypadku podanego przedziału [200 350] musisz każdą wartość podzielić przez 500. Program zapiszesz więc mniej więcej tak:
    fs=1000;
    Wp=[200 350];
    n=3;
    R=1;
    [b,a]=cheby1(n, R, Wp./(fs/2));

    Nie jestem na 100% pewien powyższego bo dawno nie sięgałem do Matlaba (Octave), ale chyba nie popełniłem jakiegoś wielkiego byka.
    Mam nadzieję, że jakoś pomogłem.
REKLAMA