Strona 1 z 1

zliczanie impulsów

: 13 lis 2012 21:58
autor: piotrek8051
Witam, mam prośbę o pomoc w rozwiązaniu problemu,mianowicie zarejestrowałem sygnał, wczytałem go w labView, pokazany mam na grafie. Sygnał jest prostokątny o zmiennej częstotliwości. Zadanie to zliczenie tych impulsów prostokątnych...można też zliczyć ilość zboczy narastających lub opadających...to już obojętnie...Nie mam pomysłu jak to zrobić. Proszę o jakieś podpowiedzi. blanka oraz plik z danymi umieszczam w załączniku.

zliczanie impulsów

: 13 lis 2012 22:13
autor: Pitol
Są bloczki do tego, w palecie Signal Processing ale jeśli nie masz odpowiedniej licencji możesz nie mieć tych bloczków.
Ale nie załamuj się! Można to wszystko zrobić ręcznie przecież i nie zajmie to dużo czasu.
Musisz zdefiniować próg, np. w Twoim sygnale próg dla próbek będzie 1. I teraz w pętli FOR próbka po próbce sprawdzasz czy wartość próbki przekroczyła Twój próg.
Jeśli tak, to zwiększasz sobie jakiś licznik (np. w rejestrze przesuwnym). Następnie sprawdzasz, kiedy próbki spadną poniżej Twojego progu. Po wykryciu tego miejsca masz już jeden impuls zliczony.
Dalsza zabawa już jest prosta. Mam nadzieję, że sobie poradzisz. Jak będą problemy to pisz!
Oczywiście rozwiązanie, które przedstawiłem nada się tylko jeśli dobrze zdefiniujesz próg a i sygnał nie będzie jakiś strasznie zaszumiony. Ale z przykładu, który dodałeś wynika, że nie.

zliczanie impulsów

: 13 lis 2012 22:20
autor: piotrek8051
właśnie nie chce korzystać z gotowych bloczków tylko zrobić to krok po kroku. też przyszło mi na myśl żeby robić to w pętli for. I tak: jeśli próbka przekroczyła próg to zwiększać licznik jeśli nie to lecieć dalej...Tylko jak zdefiniować ten próg? Jak to zrobić? Pewnie wartość każdej próbki porównywać z jakąś wartością. np w moim przypadku z zerem. to wszystko ma sie dziać w pętli while tak? nie bardzo wiem od czego zacząć...:/


coś skleiłem, pomoże mi ktoś to dopracować?? w załącznikiu-zaczęte ale nie skończone. wchodzą sobie te dane do pętli i porównuje sobie indeks i z indeksem i+1, odejmuje jeden od drugiego i jeśli różnica jest większa od 1 to... i tu pętla case.jesli true to +1 jeśli false to leć dalej... taka jest idea... pomoże ktoś?

Re: zliczanie impulsów

: 14 lis 2012 00:52
autor: smiga
Troszkę zmieniłem Ci pętle ... zerknij czy dobrze liczy:

zliczanie impulsów

: 14 lis 2012 16:44
autor: piotrek8051
ok tylko podwójnie liczy,chyba liczy zbocze narastające i opadajace. kolejnym problemem jest to aby wiedziec przy której próbce następuje zmiana stanu i wtedy te numery próbek wpuscic do tablicy a do drugiej tablicy ilosc przejsc i to dac na wykres XY

Re: zliczanie impulsów

: 14 lis 2012 18:33
autor: ruda
Hej

Pozwolę się wtrącić do waszej rozmowy i zmodyfikować kod smiga

Obrazek

W danym kodzie liczone są tylko zbocza narastające (można oczywiście zmienić na opadające). Jeżeli masz LV 2012 to problem z wyciąganiem odpowienich danych z tablicy jest łatwy do rozwiązania za pomocą indeksowania warunkowego pętli for :) W innym wypadku trzeba się będzie trochę więcej pobawić

zliczanie impulsów

: 14 lis 2012 20:58
autor: piotrek8051
yhym... chodzi mi o to żeby wyciągnąć informacje przy której próbce następuje zbocze, w tym przypadku narastające. a i jeszcze jedno, mogłabyś umieścić ten kod w załączniku?:)

Re: zliczanie impulsów

: 15 lis 2012 02:18
autor: smiga
Ruda, fajny pomysł, który zlicza zbocza opadające (miał narastające, ale to szczegół), ale nie zawsze działa poprawnie. W momencie gdy pierwsza próbka będzie w stanie niskim, a ostatnia wysokim, to za drugim odpaleniem programu zliczy o jedno zbocze więcej ... bo rejestr zapamiętał wartość ostatniej z poprzedniego uruchomienia - oczywiście proste rozwiązanie to podpiąć stałą FALSE do wejścia rejestru przed pętlą.

W załączniku przerobiony soft Rudej dla wersji 2010 ... czyli bez nowego indeksowania warunkowego z 2012.

Re: zliczanie impulsów

: 15 lis 2012 09:57
autor: trooper
Witam,

Smiga - zauważ, że rozwiązanie rudej jest poprawne - tego typu programy jak liczenie zboczy w sygnale zazwyczaj stosujesz w algorytmach pracujących ciągle - czyli w pętli while. Skoro tak, to inicjalizując rejestr gubisz informacje o stanie sygnału w poprzedniej iteracji pętli wywołujacej algorytm. Przedstawiona przez rudą propozycja omija ten problem przez niejawnie zastosowany Functional Global + nowy feature z LabVIEW 2012 - :ymapplause:

Niebyłbym sobą jakbym nie zmodyfikował czegoś przy okazji odpowiedzi - więc połączyłem implementację rudej i smigi (snippet - zapisz i przeciągnij do kodu) .... Pozdrawiam
edges.png
edges.png (25.63 KiB) Przejrzano 16075 razy

Re: zliczanie impulsów

: 15 lis 2012 11:57
autor: smiga
Jeżeli chodzić ma "non stop" na pewno będzie OK ... ale kolega Piotrek8051 wrzucił nam plik z danymi do obróbki, który, jak znam życie przynajmniej na etapie testów, będzie otwierał wielokrotnie ... i może się zdziwić jak dostanie inny wynik przy drugim odpaleniu ... ale to oczywiście kosmetyka :)

Kod wygląda coraz ładniej :ymapplause:

Szkoda, że Piotrek8051 ma LabVIEW2010 i nie skorzysta ze snippeta :(

Re: zliczanie impulsów

: 16 lis 2012 11:45
autor: piotrek8051
z 2010 korzystam raczej z przymusu niz z własnej chęci.trooper mógłbyś wrzucić ten kawałek kodu do załącznika?? mam rozumieć, że na tej dolnej tablicy na wyjściu już będe miał numer próbki przy zboczu opadającym?? bo generalnie tak jak już pisałem moim zadaniem jest wrzucić to na wykres XY- i tak: na osi Y ma być ilość zboczy a na osi X numer próbki przy której następuje zbocze... i ten wykres ma wyglądać mniej więcej tak:

zliczanie impulsów

: 18 lis 2012 22:05
autor: piotrek8051
jest w stanie mi ktoś pomóc??

Re: zliczanie impulsów

: 19 lis 2012 02:48
autor: smiga
Nie wiem w czym masz problem, bo praktycznie wszystko zostało już pokazane i udostępnione w postaci VI'i ... ale proszę jeszcze jeden (z wykresem):

Re: zliczanie impulsów

: 22 lis 2012 23:05
autor: piotrek8051
witam, w załączniku jest skleciony programik, który zlicza mi te impulsy i pokazuje na wykresie ilość zboczy w funkcji ilości próbek.teraz tak...musze wyciagnąć pochodną z ilości zboczy i zrobić taki wykres w którym na osi Y jest właśnie ta pochodna a na osi X ilość próbek. Problemem jest to że wykres składa się z takich"schodków" czyli istnieje taka sytuacja w której jest kilka próbek jakby na tym samym poziomie(ma taka sama wartość)-a pochodna ze stałej to zero...:/problem próbowałem rozwiązać przez splinera który wygładziłby mi ten wykres ale i tak doszedłem do wniosku że ten wykres w którymś momencie tak czy tak będzie fragmentami stały, więc takie rozwiązanie odpada...wie ktoś zatem jak wyciągnąć z tego pochodną??