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

Wyznaczenie okresu przebiegu?

robiw 29 Sty 2008 11:03 3372 14
REKLAMA
  • #1 4747725
    robiw
    Poziom 26  
    Witam,
    Zastanawiam się jak wyznaczyć okres przebiegu takiego jak na zdjęciu, dla którego na dodatek może przesuwać się offset, więc trudno wyznaczyć peak-i. Wyznaczenie okresu przebiegu?
    Ktoś podsunął mi temat autokorelacji ale zupełnie niw eim co z tym począć - mam przebieg spróbkowany tylko co dalej? robiw
  • REKLAMA
  • #2 4748472
    Xitami
    Poziom 29  
    t[0..N-1]  // realizacja
    a[0..N-1]  // autokorelacja
    
    for i= 0 .. N-1
         a[i]= 0
         for j= 0.. N-1
             a[i] += t[i]*t[j]
    poszukaj indeksu maksimum w a[1..N-1], ten indeks*okres próbkowania to właśnie to

    dobre dla małych (<tysiące) N, można to zrobić sprawniej posiłkując się FFT, poszukaj jakby co w sieci (Numerical Recipes in C)
  • #3 4748682
    robiw
    Poziom 26  
    Na pewno?
    Okres pomiaru to ok. 1.5sek i przypada na niego 150 próbek. Sygnał próbkowany to puls czyli od 40 do 200 uderzeń na minutę co daje częstotliwości od poniżej 1Hz do prawie 2.5Hz. A ta wartość to będzie powyżej jedności więc jak ją pomnożę przez okres pomiaru to nie wyjdzie to co trzeba? Dodatkowo w okresie przebiegu muszę policzyć wartość skuteczną... kłania się brak wiedzy z DSP...robiw
  • REKLAMA
  • #4 4748909
    Xitami
    Poziom 29  
    każ się Pan wypchać
  • #5 4749325
    robiw
    Poziom 26  
    Xitami napisał:
    każ się Pan wypchać


    Cóż za erudycja, winszuję takiej daleko zaawansowanej inteligencji...Cóż to, nie można już zapytać o szczegóły - po to są fora. Jeśli mierzi Cię odpowiadanie "motłochowi" to nie przeglądaj tegoż forum, panie specjalisto...robiw
  • REKLAMA
  • #6 4750309
    Xitami
    Poziom 29  
    A no Panie Robiw, masz pan palce, więc proszę, porachuj pan na nich.
    Wychodzi?
    Nie?
    Z przyjemnością odszcekam i przeproszę, gdy będę miał za co.
  • #7 4751077
    robiw
    Poziom 26  
    Witam,
    Przecież nie mówię, iż nie masz racji - po prostu pytam, a odpowiedź "Każ się Pan wypchać" nie jest "na miarę" użytkownika z ponad 800-postami na koncie. Zresztą, cóż znaczy "a[i] +="? O autokorelacji słyszałem lecz DSP jest mi obce, stąd pytanie. Skoro a[0..N-1] jest rzędu tysięcy, okres pomiaru rzędu 1.5 sek a "poszukaj indeksu maksimum w a[1..N-1], ten indeks*okres próbkowania to właśnie to", to przecież indeks będący wartością 0..149 pomnożony przez okres pomiaru czyli 1.5 sek nie da z pewnością wartości okresu przebiegu który jest mniejszy niż 1.5 sek. robiw
  • Pomocny post
    #8 4751288
    Xitami
    Poziom 29  
    (przepraszam, każdy czasem ma gorszy dzień, odczytałem, że to ja mam się kłaniać i...)

    nie okres pomiaru, a okres próbkowania (okres, czyli odwrotność częstotliwości)
    150 próbek, "okres" pomiaru 1,5 sekundy, więc okres próbkowania to $$T={1,5\over150}=0,01$$ (100 Hz) tak często mierzymy sygnał

    a[i] += t[i]*t[j] albo inaczej a[i]:= a[i] + t[i]*t[j]

    w a[i] mamy iloczyn, sygnału pomnożonego przez siebie, ale przesuniętego w czasie (o i*T), jeżeli przesuniemy się o zero sekund otrzymamy kwadrat sygnału (w a[] gromadzimy sumę iloczynów) czyli RMS, tyle samo co mnożąc sygnał przesunięty o jego okres, bo wtedy znowu liczymy iloczyn sygnału z samym sobą, dla wszystkich innych przesunięć musimy otrzymać mniej. W porywach zero. Zera też mogą być ciekawe.

    Przypomnienie: Sygnał nie może mieć składowych o częstotliwościach wyższych niż $$2\over T$$, jeżeli ma to nic o nim nie wiemy!
  • #9 4751972
    robiw
    Poziom 26  
    Xitami napisał:
    (przepraszam, każdy czasem ma gorszy dzień, odczytałem, że to ja mam się kłaniać i...)

    Nie szkodzi, nie rozumiałem zwyczajnie Twojego oburzenia a nie jestem tutaj nowicjuszem (choć na tym forum tak). Tak na marginesie to coś mi się zdaje, że warto sięgnąć po DSP - choćby podstawy. Ciekaw jestem czy "biblia" DSP "Wprowadzenie do cyfrowego..." byłaby dobra biorąc pod uwagę, że wiele podstaw matematycznych umknęło po studiach?

    Xitami napisał:
    nie okres pomiaru, a okres próbkowania (okres, czyli odwrotność częstotliwości)
    150 próbek, "okres" pomiaru 1,5 sekundy, więc okres próbkowania to $$T={1,5\over150}=0,01$$ (100 Hz) tak często mierzymy sygnał

    a[i] += t[i]*t[j] albo inaczej a[i]:= a[i] + t[i]*t[j]


    Czy zapis ":=" znaczy zwykłe "=" czyli tak jak np. w Pascalu - dla procka powinno to być "=" ?

    Xitami napisał:
    w a[i] mamy iloczyn, sygnału pomnożonego przez siebie, ale przesuniętego w czasie (o i*T), jeżeli przesuniemy się o zero sekund otrzymamy kwadrat sygnału (w a[] gromadzimy sumę iloczynów) czyli RMS, tyle samo co mnożąc sygnał przesunięty o jego okres, bo wtedy znowu liczymy iloczyn sygnału z samym sobą, dla wszystkich innych przesunięć musimy otrzymać mniej. W porywach zero. Zera też mogą być ciekawe.


    Ciekawe, że w taki prosty sposób można określić częstotliwość (1/T) sygnału, który jest złożeniem wielu harmonicznych i ma do tego offset :-) Ten offset zamierzam przed zastosowaniem wzorów podanych przez Ciebie usunąć odejmując od wszystkich wartości minimum znalezione wśród próbek. A co znaczą zera? Zamierzam też liczyć RMS. Rozumiem, że jak poznam okres to biorę próbki znajdujące się w jednym okresie (dowolne aby mieściły się w okresie), potęguję, liczę sumę, dzielę przez liczbę próbek, wyciągam pierwiastek drugiego stopnia i mam RMS?

    Xitami napisał:
    Przypomnienie: Sygnał nie może mieć składowych o częstotliwościach wyższych niż $$2\over T$$, jeżeli ma to nic o nim nie wiemy!


    Tego nie wiem, jak widzisz jest to sygnał złożony - to sygnał pulsu człowieka. Z tego należałoby wnioskować, że aby wziąć pod uwagę najwyższe częstotliwości składowe jakie tam mogą być, należałoby próbkować z największą możliwą częstotliwością...

    PS.
    Dziękuję :-)

    Dodano po 6 [minuty]:

    Chyba "złapałem" ;-)
    a[i] += t[i]*t[j]

    To w zapisie np. dla Pascala powinno być:
    a[i] = a[i] + (t[i]*t[j])

    , bo rozumiem, że w pętli $$j$$ do $$a[i]$$ dodajemy kolejne elementy stąd ten zapis $$+=$$... :-)
  • #10 4753020
    Xitami
    Poziom 29  
    no wiesz, to zera z jedności czynią miliony!
    :-)

    Layons fajny (i ładnie wydany), Nadachowski (bez kulki:-) przetłumaczył "www.dspduide.com", fajne i godne polecenia (zdecydowanie mniej matematyki)

    := to przypisanie, w literaturze i w Pascalu

    ano sposób prosty, bo... bo czemu miałby byś skomplikowany?
    dla małych N można liczyć jak pokazałem, dla większych warto odwrócić kwadrat Fouriera, przy okazji otrzymamy widmo, ale chyba nie będzie ciekawe

    im częściej próbkujemy tym lepiej, ale okazuje się, że od pewnego momentu nie uzyskamy więcej wiedzy o sygnale, ten moment to częstotliwość próbkowania>2*maksymalna składowa (bo przez superpozycję... itp)

    offset usuniesz nie odejmując minimum, lecz średnią (arytmetyczną)
    jeżeli później podzielisz całość przez maksimum, wtedy będziesz miał fajną i znormalizowaną próbkę, ale czy to potrzebne?


    jak pisałem wcześniej: X += Y to tyle samo co X<-X + Y, albo X:+ x + Y
  • REKLAMA
  • #11 4753154
    robiw
    Poziom 26  
    Xitami napisał:

    Layons fajny (i ładnie wydany), Nadachowski (bez kulki:-) przetłumaczył "www.dspduide.com", fajne i godne polecenia (zdecydowanie mniej matematyki)


    A mógłbyś podać pełne tytuły - chodzi mi o taka książkę od strony praktyki przetwarzania sygnałów dla uC, mniej matematyki - więcej praktyki...
    PS.
    Layons, tak na marginesie jest 2 razy tańszy od tłumaczenia Nadachowskiego.

    Xitami napisał:
    offset usuniesz nie odejmując minimum, lecz średnią (arytmetyczną) jeżeli później podzielisz całość przez maksimum, wtedy będziesz miał fajną i znormalizowaną próbkę, ale czy to potrzebne?


    Gdy odejmę średnią arytmetyczną to otrzymam także wyniki ujemne - tego chę uniknąć. Nie wystarczy odjęcie minimum? lub pozostawienie takiego jaki jest? Dla RMS części AC (tej zmieniającej się) muszę raczej odjąć offset tylko nie chciałbym otrzymywać wartości ujemnych po usunięciu offsetu, choć jak rozumiem, jeśli odejmę minimum to nadal mam offset tyle, że mniejszy? Oczywiście dziękuję za pomoc :-)...robiw

    Dodano po 5 [minuty]:

    Kiedyś polecano mi to:
    http://allegro.pl/item303301857_cyfrowe_przetwarzanie_sygnalow_nowosc_.html#photo

    Znalazłem jeszcze to:
    http://allegro.pl/item299208044_cyfrowe_przetwarzanie_sygnalow_ksiegarnia_wawa.html#photo

    robiw
  • #12 4753423
    Xitami
    Poziom 29  
    The Scientist and Engineer's Guide to Digital Signal Processing By Steven W. Smith, Ph.D.
    albo
    "Cyfrowe przetwarzanie sygnałów. Praktyczny poradnik dla inżynierów i naukowców" Steven W. Smith (tłum. dr Michał Nadachowski)

    oryginał dostępny pod www.dspguide.com
  • #13 4753608
    robiw
    Poziom 26  
    Dzięki bardzo. A co z offsetem i RMS? robiw
    Rozumiem, że Smith będzie dla mnie lepszy niż Layons?
  • #14 4768010
    Xitami
    Poziom 29  
    A co chcesz robić z offsetem? Jakiś pewnie wprowadzany jest przez układ pomiarowy i ten należałoby wyeliminować. Trzeba to przemyśleć, czemu fizycznie to odpowiada?
    Mierzysz natężenie światła, które zależy od przepływu krwi, każdy pomiar to pomiar czasu trwania impulsu ("śwatłość"/częstotliwość, 50% wypełnienie), a więc offset związany jest tylko z układem pomiarowym, a nie z mierzonym zjawiskiem. Przeliczmy więc uS na W/m^2, dalej zostaje nam związek między światłem a przepływem. Wiemy coś o nim?
    Chciałbyś liczyć RMS z jednego okresu (RMS to pierwiastek z sumy kwadratów podzielonej przez liczbę próbek), jako że na jeden okres przypada mało próbek, popełnisz mniejszy błąd licząc go z wielu okresów i taki dzieląc przez liczbę okresów.
    Czemu może to służyć? Może porównaniu "jakości" pomiarów? Ja przemyślałbym jednak liczenie po odjęciu średniej i podzieleniu przez maksymalny moduł (wartość bezwzględną).
    Ale czy RMS jest tu odpowiedni, czy może jakaś inna miara, np. odchylenie.
    A czemu wartości ujemne są be...? :-)

    Smith jest bardzo fajny, oczywiście nie wyczerpujący, ale bardzo często dający praktyczne rozwiązanie wielu problemów. Poza zakończeniem dla twardzieli, wymaga elementarnej matematyki, a programy zapisane w prostym BASICU zrozumie każdy, komu mogą się one przydać. Nie widziałem tłumaczenia, a oryginał tak mi się spodobał, że aż zacząłem go tłumaczyć.

    Liczenie autokorelacji korzystając z transformaty Fouriera to chyba dobry pomysł, po drodze zobaczymy widmo sygnału, ciekawe czy nie zobaczymy tam np. silnych 50 Hz? Jeżeli ktoś nie ma rozrusznika serca z sieciowym zasilaczem, to może o czymś świadczyć :-)

    Pooglądałbym jakieś liczby, dodaj w załączniku.
  • #15 4789906
    Xitami
    Poziom 29  
    i jak tam z okresem? podobno hormonalne pigułki go regulują :)
REKLAMA