problemy z ustawieniem kursorów przy detekcji QRS

Sprawy związane z interfejsem użytkownika - kontrolki, wskaźniki, wyświetlacze, wykresy oraz inne zagadnienia tego typu...
justine
Posty: 6
Rejestracja: 14 gru 2011 01:35
Wersja środowiska: LabVIEW 2010

problemy z ustawieniem kursorów przy detekcji QRS

Post autor: justine »

Witam!
Jestem raczej początkująca, jeśli chodzi o pracę w LabVIEW i mam pewne problemy przy tworzeniu programu, więc postanowiłam, że spróbuję poszukać pomocy tutaj (to mój pierwszy post na tym forum).
Aplikacja, którą buduję ma służyć do akwizycji oraz wizualizacji sygnałów reograficznych (sygnał który pokazuje zmiany impedancji tkanek) oraz EKG. Problem dotyczy właśnie sygnału EKG(otwieram plik z zapisanym wcześniej badaniem), na którym muszę zdetekować i zaznaczyć kursorami punkty Q i R(załączam plik z oznaczeniem tych punktów w typowym przebiegu). Detekcję R-ów przeprowadzam funkcją WA Multiscale Peak Detection z Toolkitu Advanced Signal Processing i w miarę dobrze to działa, nie licząc drobnych błędów. Natomiast ze względu na przebieg sygnału dużo gorzej jest z detekcją Q (tutaj funkcja detekuje bardzo dużo niepotrzebnych punktów) - chcę to znaleźć jako pierwszą 'dolinę' przed każdym znalezionym punktem R lub też jako dolinę w ustalonej odległości od R. I stąd moje pytanie - czy da się to jakkolwiek zrobić, żeby szukać punktów w określonych przedziałach? (Myślałam, żeby może wstawić formułę np. z MATLABa i próbować zapisać w niej jakieś warunki porównujące pomiędzy sobą odległości między znalezionymi lokalizacjami poszczególnych Q i R, ale wydaje to mi się bardzo skomplikowane, dlatego szukam jakiegoś innego sposobu, żeby osiągnąć ten efekt.)

Mam jeszcze inne pytanie, związane z kursorami. Każdy plik EKG, jaki wczytuję do analizy jest inny i ma inną liczbę zapisanych cykli pracy serca, a co za tym idzie inną liczbę znalezionych pików. Do tej pory wstawiałam na diagramie 20 razy Active Cursor (bo więcej R-ów mi się do tej pory nie zdarzyło) i ustawiałam pozycję X każdego z nich według współrzędnych znalezionych przez funkcję Peak Det. . Ale gdy np. znalazło się 17 pików to pozostałe 3 kursory ustawiają się na x=0, co jest błędne. Dlatego chciałam zapytać, czy jest możliwe automatyczne dostosowanie liczby pojawiających się na wykresie kursorów do liczby znalezionych pików?

I jeszcze ostatnie pytanie, czy można dodać ręczną korekcję położenia kursorów (przy wcześniejszym zdefiniowaniu ich pozycji) - tak, aby w trakcie działania programu można było dodać/usunąć kursor lub skorygować jego położenie w przypadku błędnej detekcji punktu?

Załączam plik z wyglądem typowego EKG i printscreena z mojego diagramu i panelu frontowego, gdzie widać znalezione punkty R.

Wybaczcie tyle tekstu naraz ;p
Jak już wspominałam, dopiero uczę się programowania w LabVIEW, dlatego wiele rzeczy (nawet tych najprostszych) jest dla mnie nadal nieoczywistych, z góry przepraszam, jeśli napisałam tu jakąś głupotę lub pytam o rzeczy niemożliwe. Będę wdzięczna za każdą wskazówkę lub podpowiedź :)
Pozdrawiam,
Justyna
Załączniki
detekcja R.jpg
skan diagramu.jpg
electrocardiogram.jpg
electrocardiogram.jpg (8.44 KiB) Przejrzano 11986 razy
NIKT
Posty: 26
Rejestracja: 16 mar 2011 19:34
Wersja środowiska: LabVIEW 2011

Re: problemy z ustawieniem kursorów przy detekcji QRS

Post autor: NIKT »

Witam,

Możesz zamieścić swój kod oraz przykładową próbkę danych?
Łatwiej w ten sposób byłoby Ci coś poradzić.

Co do drugiego pytania to możesz sprawdzać warunek czy dana jest większa od zera a następnie w Case Structure decydować czy punkt ma być czy nie.

pozdrawiam,
justine
Posty: 6
Rejestracja: 14 gru 2011 01:35
Wersja środowiska: LabVIEW 2010

Re: problemy z ustawieniem kursorów przy detekcji QRS

Post autor: justine »

Jasne, załączam kod i chciałam też przykładowy plik z danymi (jest zapisany w określonej sekwencji, zawiera próbki EKG i reogrficzne - odpowiednie dane wyświetlają się na wykresach po załadowaniu pliku) - tylko że to są pliki z rozszerzeniem .dat i przy dodawaniu załącznika wyświetla mi się komunikat że jest ono zabronione. Mogę przesłać je inną drogą, może mailowo? Najważniejsze wykresy są na górze na panelu frontowym, to że niżej jest jeszcze dużo innych wynika z faktu, że jest to wersja robocza aplikacji i staram się sprawdzić na którym etapie przetwarzania sygnału najlepiej jest detekować punkty charakterystyczne.

Zastanawiam się też czy może funkcja Peak Detector Point by Point coś tutaj pomoże?
Załączniki
program falki + akwizycja.vi
(169.91 KiB) Pobrany 455 razy
Awatar użytkownika
jogurt_owocowy
Posty: 1317
Rejestracja: 30 lis 2004 00:00
Wersja środowiska: LabVIEW 2015
Lokalizacja: Kraków

Re: problemy z ustawieniem kursorów przy detekcji QRS

Post autor: jogurt_owocowy »

justine pisze:tylko że to są pliki z rozszerzeniem .dat i przy dodawaniu załącznika wyświetla mi się komunikat że jest ono zabronione
Spakuj do zipa.
justine
Posty: 6
Rejestracja: 14 gru 2011 01:35
Wersja środowiska: LabVIEW 2010

Re: problemy z ustawieniem kursorów przy detekcji QRS

Post autor: justine »

zrobione, dzięki za podpowiedź ;] plik w załączniku
Załączniki
HRYC.zip
(134.16 KiB) Pobrany 426 razy
NIKT
Posty: 26
Rejestracja: 16 mar 2011 19:34
Wersja środowiska: LabVIEW 2011

Re: problemy z ustawieniem kursorów przy detekcji QRS

Post autor: NIKT »

Witam,

Nie jest dydaktyczne zamieszczanie gotowych rozwiązań, ale co tam, idą w końcu Święta ;)
To co zamieszczam potraktuj jako wskazówki a nie jako gotowe rozwiązanie.

pozdrawiam,
Załączniki
program falki + akwizycja.vi
(174.66 KiB) Pobrany 474 razy
justine
Posty: 6
Rejestracja: 14 gru 2011 01:35
Wersja środowiska: LabVIEW 2010

problemy z ustawieniem kursorów przy detekcji QRS

Post autor: justine »

Wow, podobają mi się takie wskazówki jako prezent świąteczny ;) Zabieram się teraz do walki z drugim sygnałem. Dziękuję serdecznie! bardzo mi pomogłeś.

Pozdrawiam,
j.
justine
Posty: 6
Rejestracja: 14 gru 2011 01:35
Wersja środowiska: LabVIEW 2010

Re: problemy z ustawieniem kursorów przy detekcji QRS

Post autor: justine »

Witam,
w swoim programie (idea opisana na początku tematu) dodałam również kursory detekujące punkty charakterystyczne w drugim sygnale (punkty B C X) i od kiedy pojawiły się odpowiedzialne za to pętle i struktury, zauważyłam również nowy problem - program po załadowaniu pliku z badaniem przy przełączaniu kolejnych sekwencji (kontrolka Numer cyklu) zacina się przy niektórych cyklach - tzn. przestaje reagować na kolejne przełączanie cykli, choć cały czas pracuje.Wtedy trzeba go zastopować i uruchomić jeszcze raz. Zanim dodałam struktury związane z drugim sygnałem, takiego problemu nie było. Próbowałam to na kilka sposobów rozwiązać, ale bezskutecznie, bo w zasadzie nie wiem, co jest przyczyną... Dlatego proszę o pomoc, może ktoś ma jakiś pomysł, jak sobie z tym poradzić? Załączam .vi , a plik z przykładowym badaniem jest do pobrania kilka postów wyżej.
Pozdrawiam,
justyna
Załączniki
program falki ekg + reo.vi
(87.42 KiB) Pobrany 400 razy
NIKT
Posty: 26
Rejestracja: 16 mar 2011 19:34
Wersja środowiska: LabVIEW 2011

Re: problemy z ustawieniem kursorów przy detekcji QRS

Post autor: NIKT »

Witam,

Zapętlają Ci się While. Weźmy dla przykładu poszukiwania punktu "B". Dla pewnego cyklu (bodajże 4) program odnajduje maksimum (pierwsze z brzegu) a następnie cofa się co jedną próbkę i sprawdza czy ta wartość jest mniejsza od zera. Pech chciał że ta akurat próbka zaczyna się w połowie "piku" i wartości zerowej pik poprzedzającej nie ma. No i mamy piękną niekończącą się pętelkę. Na załączonym obrazku masz sposób jak pozbyć się tego błędu dla punktów typu "B". Będziesz musiała pomyśleć jak wyeliminować takie błędu z drugiej strony (nr cyklu bodajże 11).

P.S.1 Jedna pętlą z strukturą Event wystarczy. Przerzuć zdarzenia z jednej do drugiej.
P.S.2 Wydaję mi się że jedną pętlę While (tą zewnętrzną) z programu głównego tez możesz sobie odpuścić.
P.S.3 Zamień odpowiednie fragmenty kodu na SubVi załączony poniżej. Twój kod będzie wyglądał dużo przejrzyściej.

Pozdrawiam,
Załączniki
podprogram.vi
(13.74 KiB) Pobrany 387 razy
4.JPG
justine
Posty: 6
Rejestracja: 14 gru 2011 01:35
Wersja środowiska: LabVIEW 2010

Re: problemy z ustawieniem kursorów przy detekcji QRS

Post autor: justine »

Dziękuję za podpowiedzi! W przypadku punktów 'E' wprowadziłam dodatkowy warunek, który sprawdza czy indeks branej pod uwagę próbki nie jest większy niż 2046 (bo tyle zawiera każdy cykl) i już się nie zacina ;)
ODPOWIEDZ