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] Dlaczego sygnał prostokątny generuje dodatkową składową?

01 Gru 2012 13:45 6123 6
REKLAMA
  • #1 11596663
    Konto nie istnieje
    Konto nie istnieje  
  • REKLAMA
  • Pomocny post
    #2 11600201
    Grzybens
    Poziom 13  
    Strasznie namieszałeś z pytaniem.
    Skoro częstotliwość wynosi 3 Hz, to w jednej sekundzie powinno być 3 okresy sygnału.
    Okres to nie jedna sekunda trwania sygnału.
    Teraz sobie policz:
    na jedną sekundę przypada 20k próbek
    na jeden okres przypada 20k / 3 = 6667 próbek (zaokrąglenie!!!)
    U Ciebie, tmpA + tmpB = 6666 więc brakuje Ci jednej próbki w okresie.

    Mimo wszystko, trochę niefortunny przykład podałeś, bo masz dzielenie przez 3 więc nie dzielisz ilości próbek bez reszty tylko z zaokrągleniem.
    MZ powinieneś kontrolować 'k' częściej niż przy jednym okresie.
  • REKLAMA
  • #3 11600426
    Konto nie istnieje
    Konto nie istnieje  
  • REKLAMA
  • #4 11602328
    Grzybens
    Poziom 13  
    ruido napisał:

    No tak, w końcu $$t_{p}=\frac{1}{f_{p}}$$ i czas trwania okresu jest wyrażany w sekundach. Rzeczywiście trochę namieszałem. Teraz już bardziej to rozumiem.

    Zamiast kontrolować k pętlą while po prostu wykonaj tą pętle T*fp razy
    czyli lepiej będzie zastosować
    for k = 1 : T*fp
    ...
    end
  • #5 11602522
    Konto nie istnieje
    Konto nie istnieje  
  • REKLAMA
  • Pomocny post
    #6 11603009
    Grzybens
    Poziom 13  
    OK
    trochę za szybko odpowiedziałem, bo nie zwróciłem na pewne rzeczy uwagi.
    Sygnał musi się kończyć na T*fp próbce, a jeden obrót pętli to jeden okres czyli fp/f (ilość próbek na sek. / ilość okresów na sek.)
    w takim razie możesz kontrolować pętlę główną tak:
    for JakasZmienna = 1 : fp/f  : T*fp
        ...
    end

    Teraz powinno działać.
  • #7 11604682
    Konto nie istnieje
    Konto nie istnieje  
REKLAMA