zliczanie impulsów

Jeśli masz coś do powiedzenia w sprawie LabVIEW napisz. Tutaj są tematy, których nie można uściślić do innych działów.
piotrek8051
Posty: 7
Rejestracja: 13 lis 2012 21:49
Wersja środowiska: LabVIEW 2010

zliczanie impulsów

Post 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.
Załączniki
piotrek2.txt
(34.2 KiB) Pobrany 430 razy
prog_inz.vi
(14.88 KiB) Pobrany 427 razy
Awatar użytkownika
Pitol
Moderator
Posty: 984
Rejestracja: 19 lip 2007 00:00
Wersja środowiska: LabVIEW 2019
Lokalizacja: Kraków

zliczanie impulsów

Post 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.
ObrazekObrazekObrazek
Chcesz taki podpis? Zajrzyj tutaj
piotrek8051
Posty: 7
Rejestracja: 13 lis 2012 21:49
Wersja środowiska: LabVIEW 2010

zliczanie impulsów

Post 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ś?
Załączniki
prog_inz.vi
(13.45 KiB) Pobrany 410 razy
Awatar użytkownika
smiga
Administrator
Posty: 817
Rejestracja: 04 paź 2009 12:41
Wersja środowiska: LabVIEW 2019
Lokalizacja: Słupsk

Re: zliczanie impulsów

Post autor: smiga »

Troszkę zmieniłem Ci pętle ... zerknij czy dobrze liczy:
Załączniki
prog_inz.vi
v2010
(13.95 KiB) Pobrany 459 razy
__ Arkadiusz Śmigielski, tel. 662 01 01 74___
ObrazekObrazekObrazek
Pomogłem ... postaw kawę: https://buycoffee.to/smiga
piotrek8051
Posty: 7
Rejestracja: 13 lis 2012 21:49
Wersja środowiska: LabVIEW 2010

zliczanie impulsów

Post 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
ruda
Posty: 23
Rejestracja: 18 sty 2012 15:29
Wersja środowiska: LabVIEW 2011

Re: zliczanie impulsów

Post 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ć
Obrazek
Extensa - certyfikowani programiści LabVIEW z Krakowa.
piotrek8051
Posty: 7
Rejestracja: 13 lis 2012 21:49
Wersja środowiska: LabVIEW 2010

zliczanie impulsów

Post 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?:)
Awatar użytkownika
smiga
Administrator
Posty: 817
Rejestracja: 04 paź 2009 12:41
Wersja środowiska: LabVIEW 2019
Lokalizacja: Słupsk

Re: zliczanie impulsów

Post 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.
Załączniki
prog_inz-1.vi
v2010
(13.44 KiB) Pobrany 410 razy
__ Arkadiusz Śmigielski, tel. 662 01 01 74___
ObrazekObrazekObrazek
Pomogłem ... postaw kawę: https://buycoffee.to/smiga
Awatar użytkownika
trooper
Posty: 22
Rejestracja: 22 paź 2012 17:44
Wersja środowiska: LabVIEW 2012
Kontakt:

Re: zliczanie impulsów

Post 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 16078 razy
Awatar użytkownika
smiga
Administrator
Posty: 817
Rejestracja: 04 paź 2009 12:41
Wersja środowiska: LabVIEW 2019
Lokalizacja: Słupsk

Re: zliczanie impulsów

Post 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 :(
__ Arkadiusz Śmigielski, tel. 662 01 01 74___
ObrazekObrazekObrazek
Pomogłem ... postaw kawę: https://buycoffee.to/smiga
piotrek8051
Posty: 7
Rejestracja: 13 lis 2012 21:49
Wersja środowiska: LabVIEW 2010

Re: zliczanie impulsów

Post 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:
Załączniki
IMG_20121116_114046.jpg
piotrek8051
Posty: 7
Rejestracja: 13 lis 2012 21:49
Wersja środowiska: LabVIEW 2010

zliczanie impulsów

Post autor: piotrek8051 »

jest w stanie mi ktoś pomóc??
Awatar użytkownika
smiga
Administrator
Posty: 817
Rejestracja: 04 paź 2009 12:41
Wersja środowiska: LabVIEW 2019
Lokalizacja: Słupsk

Re: zliczanie impulsów

Post 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):
Załączniki
Untitled 1.vi
v2010
(15.42 KiB) Pobrany 381 razy
__ Arkadiusz Śmigielski, tel. 662 01 01 74___
ObrazekObrazekObrazek
Pomogłem ... postaw kawę: https://buycoffee.to/smiga
piotrek8051
Posty: 7
Rejestracja: 13 lis 2012 21:49
Wersja środowiska: LabVIEW 2010

Re: zliczanie impulsów

Post 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ą??
Załączniki
na forum.vi
(25.6 KiB) Pobrany 374 razy
ODPOWIEDZ