plik .dat

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.
MonikaL88
Posty: 8
Rejestracja: 16 kwie 2012 18:49
Wersja środowiska: Nie mam LabVIEW

plik .dat

Post autor: MonikaL88 »

Hej,

mam sygnał EKG w postaci pliku .dat chciałabym wyciągnąć z niego ciąg liczb i zapisać w postaci .txt . Podobno można to zrobić w Matlabie. Czy ktoś może mi pomóc i powiedzieć jak?
MicMac89
Posty: 122
Rejestracja: 05 wrz 2011 20:40
Wersja środowiska: LabVIEW 2011

plik .dat

Post autor: MicMac89 »

Można to zrobić w Matlabie, spróbuj file -> import data, lub load('nazwa_pliku.dat'); przy czym powinna być wówczas ustawiona odpowiednia ścieżka.
Certified LabVIEW Associate Developer
MonikaL88
Posty: 8
Rejestracja: 16 kwie 2012 18:49
Wersja środowiska: Nie mam LabVIEW

Re: plik .dat

Post autor: MonikaL88 »

Niestety to nie działa
MicMac89
Posty: 122
Rejestracja: 05 wrz 2011 20:40
Wersja środowiska: LabVIEW 2011

plik .dat

Post autor: MicMac89 »

Dziwne, możesz udostępnić jakiś przykładowy plik?
Certified LabVIEW Associate Developer
MonikaL88
Posty: 8
Rejestracja: 16 kwie 2012 18:49
Wersja środowiska: Nie mam LabVIEW

plik .dat

Post autor: MonikaL88 »

Na tej stronie są te pliki, które ja wykorzystuję.
http://www.physionet.org/physiobank/database/mitdb/
may
Posty: 96
Rejestracja: 20 lut 2012 12:30
Wersja środowiska: LabVIEW 2014
Lokalizacja: Katowice / Ruda Śląska

plik .dat

Post autor: may »

To zasadniczo nie jest forum MATLABa, ale myślę że postaramy się pomóc :) Bo rozumiem, że bardziej interesuje Cię rozwiązanie problemu w MATLABie niż w LabVIEW?
Gdy wejdziemy na stronę faq physionetu jest tam obszernie opisane w jaki sposób zapisane są sygnały w plikach i jak je otworzyć.
http://www.physionet.org/faq.shtml#physiobank
Między innymi jest tam napisane, że plików nie da się bezpośrednio wczytać do MATLABa, ale na szczęście byli na tyle mili, że podali linki do co najmniej kilku metod odczytania naszych plików. Jedną z nich (i chyba najprostszą) jest podany tam skrypt MATLABowy "ECG_Exporter". Do pobrania stąd:
http://www.physionet.org/physiotools/ma ... _Exporter/.

Kopiujemy skrypt do MATLABa, uruchamiamy, on pyta nas o folder i nazwę plików (ważne! poza plikiem .dat trzeba ściągnąć odpowiadające pliki .hea i .atr i umieścić w tym samym folderze) a on przeczyta sygnały i ładnie wyeksportuje je do pliku zmiennych MATLABa .mat a dodatkowo uraczy nas wykresem odczytanych sygnałów.
Przetestowałem, działa.

Przeczytaj faq tej stronki i ew. opisy tych różnych metod czytania ich plików, które oni tam polecają, naprawdę całkiem dobrze jest wszystko udokumentowane. Jakby coś dalej nie działało, to pisz, postaramy się pomóc.
Obrazek
MonikaL88
Posty: 8
Rejestracja: 16 kwie 2012 18:49
Wersja środowiska: Nie mam LabVIEW

Re: plik .dat

Post autor: MonikaL88 »

Działa, ale ten plik .mat nie jest taki jak ma być. Chciałam otrzymać plik w postaci cyfr. A tam cały czas jest tylko zapis binarny.
may
Posty: 96
Rejestracja: 20 lut 2012 12:30
Wersja środowiska: LabVIEW 2014
Lokalizacja: Katowice / Ruda Śląska

plik .dat

Post autor: may »

Ok, myślałem że jeżeli masz już dane w MATLABie to zapisanie ich sobie tak jak się chce nie będzie problemem.

Po uruchomieniu tego magicznego skryptu polecam wyczyścić workspace (polecenie "clean") bo skrypt tworzy sobie milion zmiennych i przynajmniej je nie umiem znaleźć w worspace'ie tego czego szukam.
Klikamy prawym przyciskiem na nasz plik.mat i wybieramy load. W workspace'ie pojawi nam się kilka zmiennych (w zależności ile sygnałów było w naszym wejściowym pliku dat). Namierzamy ten który nas interesuje.

Teraz zasadniczo mamy 2 opcje:

Metoda 1: Wydajemy polecenie MATLABa "save NazwaPliku.txt -ASCII ECG_1" gdzie zamiast ECG_1 piszemy nazwę zmiennej którą chcemy zapisać.
To zasadniczo rozwiązuje problem, bo mamy plik .txt w którym mamy zapisany sygnał jak to określiłaś "w postaci cyfr". Tyle że zapisany jest on z dużą dokładnością i w notacji wykładniczej. A to może przeszkadzać. Pewnie da się to zrobić bezpośrednio w MATLABie, ale nie chce mi się szukać jak. Tu z pomocą może przyjść metoda 2 (pomijamy metodę 1):

Metoda 2: Otwieramy naszą zmienną w variable editorze (dwuklik na nazwę zmiennej). Ctrl-A , Ctrl-C, Ctrl-V do Excela. W zależności od wersji MATLABA, Excela i systemowego ustawienia symbolu dziesiętnego Excel może widzieć nasze dane jako tekst (justowane do lewej). Chcemy żeby widział to jako liczby. Naciskamy Ctrl-F i w zamień zamienimy przecinek na kropkę (lub kropkę na przecinek) tak żeby Excel widział dane jako liczby (wyjustował do prawej i uciął zbędne zera). Jeżeli chcemy to możemy sobie jakoś bardziej sprecyzować jak ma Excel nasze liczby wyświetlać. Np. ustawienie liczby miejsc dziesiętnych na 3 w tym przypadku działa dobrze i daje równy słupek liczb.
Klikamy zapisz jako, wybieramy tekst rozdzielany znakami tabulacji (albo coś podobnego to się może różnić w zależności od wersji Excela) i viola! cieszymy się naszymi ślicznymi plikami tekstowymi. Nie wiem po co komu tak paskudnie wielkie pliki tekstowe, ale jak lubimy txt to niech będzie txt.

Myślę, że to już wyczerpało temat "Jak z EKG z physionetu zrobić sobie plik txt z użyciem Matlaba" :p
Ostatnio zmieniony 20 kwie 2012 12:46 przez may, łącznie zmieniany 1 raz.
Obrazek
MonikaL88
Posty: 8
Rejestracja: 16 kwie 2012 18:49
Wersja środowiska: Nie mam LabVIEW

plik .dat

Post autor: MonikaL88 »

No właśnie doszłam do tego jak zapisać w matlabie w postaci pliku .txt, ale niestety są to liczby dużą dokładnością i notacją wykładniczą, a ta druga metoda coś nie działa. Z tych krzaczków z pliku .mat nie chcą sie zrobić cyferki.
may
Posty: 96
Rejestracja: 20 lut 2012 12:30
Wersja środowiska: LabVIEW 2014
Lokalizacja: Katowice / Ruda Śląska

plik .dat

Post autor: may »

Ehh, nie bardzo wiem jak może nie działać. Zrobiłaś wszystko tak jak tam opisałem? Nie bardzo wiem gdzie masz jakieś krzaczki. W pliku .mat żadnych krzaczków nie ma. A przynajmniej być nie powinno. Załóżmy że masz zmienną w MATLABie (a masz, bo jeżeli udało ci się zastosować pierwszą metodę, to masz te sygnały odczytane z pliku dat i poprawnie zaimportowane z pliku mat). W okienku workspace MATLABa (jak nie ma takiego okienka to kliknąć desktop->workspace) dwukrotnie klikasz zmienną np. ECG_1. Powinno pojawić się okienko "variable editor" które wygląda jak tabelka excela. Powinien się w nim znajdować jeden słupek liczb (nie krzaczków!). Kopiujesz - wklejasz do excela. Formatujesz sobie wyświetlanie liczb w excelu. Zapisujesz do txt. Nie bardzo wiem który moment tego procesu może nie działać. I tak na przyszłość - pisz bardziej rozbudowane opisy problemów - wtedy łatwiej jest pomóc i nie trzeba się dopytywać. "Coś nie działa" to problematyczna definicja problemu :p
Obrazek
MonikaL88
Posty: 8
Rejestracja: 16 kwie 2012 18:49
Wersja środowiska: Nie mam LabVIEW

Re: plik .dat

Post autor: MonikaL88 »

Dziękuję bardzo za pomoc. Już wszystko jest tak jak powinno. Mam nadzieję, że reszta programu jest dobrze i sieci neuronowe będą się uczyć tak jak powinny.
PrzemoP
Posty: 1
Rejestracja: 25 paź 2012 12:50
Wersja środowiska: LabVIEW 2011

plik .dat

Post autor: PrzemoP »

Witam,
czy byłby ktoś tak uprzejmy i doradził mi, w jaki sposób najłatwiej wczytać taki plik .dat ( z powyższej bazy) do LV?
Awatar użytkownika
Góras
Posty: 88
Rejestracja: 13 sie 2012 10:15
Wersja środowiska: LabVIEW 2012

Re: plik .dat

Post autor: Góras »

Najłatwiej uruchomić w LabVIEW skrypt MATLAB'a - wczytać plik .dat i zapisać go do .txt, a potem wczytać w LV wygenerowany przez Ciebie plik. Tylko pamiętaj żeby użyć którejś ze struktur sekwencji :)

Pozdrawiam i życzę miłego dnia :)
ODPOWIEDZ