Wczytanie danych z pliku ( a właściwie konwersja na tablicę)
-
- Posty: 2
- Rejestracja: 13 wrz 2004 00:00
Wczytanie danych z pliku ( a właściwie konwersja na tablicę)
Witam,
To mój pierwszy post na forum.
I zapewne dość trywialny dla większości, ale...
Problem 1:
Format pliku x1 y1 x2 y2 x3 y3.......itd y x,y float'y, delimiter TAB. Próbowałem różnych sposobów z exampli i innych, ale bez rezultatu. Otwieram plik, wczytuję kontrolnie do string idicator - wyswietla się, niestety nie bardzo udaje mi się przekonwertować go na tablice 2D: x1 y1 x2 y2 ... (cały czas na 0)
Problem 2: mam plik z danymi w formacie:
Nagłówek1 x1 y1 z1 x2 y2 z2 ... Nagłówek2 x y z ...
Nagłówek występuje zawsze w pierwszej linii a następnie w stałych odstępach co 4000 linii. Jak wczytać taki plik. Właściwie interesuje mnie składowa z wpisana do tablicy 2D z kolejnych nagłówków.
Podpowiedzcie coś....
Pozdrawiam
To mój pierwszy post na forum.
I zapewne dość trywialny dla większości, ale...
Problem 1:
Format pliku x1 y1 x2 y2 x3 y3.......itd y x,y float'y, delimiter TAB. Próbowałem różnych sposobów z exampli i innych, ale bez rezultatu. Otwieram plik, wczytuję kontrolnie do string idicator - wyswietla się, niestety nie bardzo udaje mi się przekonwertować go na tablice 2D: x1 y1 x2 y2 ... (cały czas na 0)
Problem 2: mam plik z danymi w formacie:
Nagłówek1 x1 y1 z1 x2 y2 z2 ... Nagłówek2 x y z ...
Nagłówek występuje zawsze w pierwszej linii a następnie w stałych odstępach co 4000 linii. Jak wczytać taki plik. Właściwie interesuje mnie składowa z wpisana do tablicy 2D z kolejnych nagłówków.
Podpowiedzcie coś....
Pozdrawiam
Ostatnio zmieniony 11 gru 2007 22:07 przez andrzejg76, łącznie zmieniany 4 razy.
- jogurt_owocowy
- Posty: 1317
- Rejestracja: 30 lis 2004 00:00
- Wersja środowiska: LabVIEW 2015
- Lokalizacja: Kraków
Re: Wczytanie danych z pliku ( a właściwie konwersja na ta
Witaj na forum.
Jeśli chodzi o problem nr 1 to sprawa jest prosta (patrz załącznik), natomiast z drugim jest gorzej.
Jeśli masz wpływ na postać tego drugiego pliku to go zmień (pierwszy zresztą też mógłby być lepszy). Zamiast jednego pliku z kilkoma nagłówkami lepsze będzie po prostu kilka plików. Jeśli dostajesz ten plik "z góry" to niestety, ale będzie z tym trochę zabawy polegającej na żonglerce stringami i tablicami. Możesz zacząć od detekcji nagłówków np. w sposób pokazany w załączniku, a następnie korzystając z tej informacji odpowiednio wyłuskać potrzebne Ci wartości.
To, że nagłówek występuje co 4000 linii jest informacją średnio przydatną. Co prawda mając pewność, że liczby są zawsze zapisywane z tą samą precyzją, możesz obliczyć gdzie znajduje się odpowiadający nagłówkowi kawałek stringa z danymi, wyłuskać go "po omacku" i zamienić na tablicę, ale nie jest to rozwiązanie eleganckie.
Pozdrawiam :]
Jeśli chodzi o problem nr 1 to sprawa jest prosta (patrz załącznik), natomiast z drugim jest gorzej.
Jeśli masz wpływ na postać tego drugiego pliku to go zmień (pierwszy zresztą też mógłby być lepszy). Zamiast jednego pliku z kilkoma nagłówkami lepsze będzie po prostu kilka plików. Jeśli dostajesz ten plik "z góry" to niestety, ale będzie z tym trochę zabawy polegającej na żonglerce stringami i tablicami. Możesz zacząć od detekcji nagłówków np. w sposób pokazany w załączniku, a następnie korzystając z tej informacji odpowiednio wyłuskać potrzebne Ci wartości.
To, że nagłówek występuje co 4000 linii jest informacją średnio przydatną. Co prawda mając pewność, że liczby są zawsze zapisywane z tą samą precyzją, możesz obliczyć gdzie znajduje się odpowiadający nagłówkowi kawałek stringa z danymi, wyłuskać go "po omacku" i zamienić na tablicę, ale nie jest to rozwiązanie eleganckie.
Pozdrawiam :]
-
- Posty: 2
- Rejestracja: 13 wrz 2004 00:00
Re: Wczytanie danych z pliku ( a właściwie konwersja na ta
Wiem, że ten format plików nie jest zbyt poręczny w obróbce, ale na to nie mam wpływu.
Dzięki za podpowiedź (rozwiązanie).
Spróbuję to dopracować i zobaczymy...
A z innej beczki...
Gdzie dokładnie znajduje się spis dozwolonych (niedozwolonych) rozszerzeń plików załączanych na forum. Kierowało mnie do regulaminu, ale tam nie znalazłem :roll:
Pozdrawiam
Dzięki za podpowiedź (rozwiązanie).
Spróbuję to dopracować i zobaczymy...
A z innej beczki...
Gdzie dokładnie znajduje się spis dozwolonych (niedozwolonych) rozszerzeń plików załączanych na forum. Kierowało mnie do regulaminu, ale tam nie znalazłem :roll:
Pozdrawiam
Ostatnio zmieniony 12 gru 2007 09:33 przez andrzejg76, łącznie zmieniany 1 raz.
-
- Posty: 383
- Rejestracja: 17 lis 2006 00:00
- Wersja środowiska: LabVIEW 2009
- Lokalizacja: Warszawa
Re: Wczytanie danych z pliku ( a właściwie konwersja na ta
Mam inną propozycję. Wykorzystuje to, że Scan From String zwraca błąd kiedy łańcuch wejściowy jest niepoprawny (czyli jest nagłówkiem)
Na Read Text File trzeba nacisnąć PKM i wybrać Read Lines.
Powstaje linijka zer na początku, ale z tym można sobie chyba poradzić...
(To oczywiście rozwiązanie problemu 2)
Na Read Text File trzeba nacisnąć PKM i wybrać Read Lines.
Powstaje linijka zer na początku, ale z tym można sobie chyba poradzić...
(To oczywiście rozwiązanie problemu 2)
Ostatnio zmieniony 12 gru 2007 10:00 przez vugie, łącznie zmieniany 1 raz.
- jogurt_owocowy
- Posty: 1317
- Rejestracja: 30 lis 2004 00:00
- Wersja środowiska: LabVIEW 2015
- Lokalizacja: Kraków
Re: Wczytanie danych z pliku ( a właściwie konwersja na ta
Chyba nie łapię idei, w każdym razie już sam klocek Spreadsheet String to Array (albo Read From Spreadsheet File) działa w taki właśnie sposób, że zamienia nagłówki na linijki zer.Powstaje linijka zer na początku, ale z tym można sobie chyba poradzić...
Ostatecznie chyba najszybciej byłoby to zrobić, tak, że najpierw jakoś namierzyć pozycje nagłówków, potem wyciąć z zawartości pliku cała partię danych i hurtem ją zamienić na tablicę za pomocą Spreadsheet String to Array.
Pozdrawiam ]
-
- Posty: 383
- Rejestracja: 17 lis 2006 00:00
- Wersja środowiska: LabVIEW 2009
- Lokalizacja: Warszawa
Re: Wczytanie danych z pliku ( a właściwie konwersja na ta
Ale nie chodzi o to żeby tylko wycinać nagłówki, tylko żeby partia danych pomiędzy dwoma nagłówkami była oddzielnym wierszem tabeli.
W zasadzie to jeszcze prościej byłoby faktycznie wyciąć nagłówki wczytać z-ty do jednej tabeli, a potem Reshape Array
W zasadzie to jeszcze prościej byłoby faktycznie wyciąć nagłówki wczytać z-ty do jednej tabeli, a potem Reshape Array
Re: Wczytanie danych z pliku ( a właściwie konwersja na ta
Można i tak: wersja alternatywna dla jogurta aka Jogurt Alternatywny:jogurt_owocowy pisze:Ostatecznie chyba najszybciej byłoby to zrobić, tak, że najpierw jakoś namierzyć pozycje nagłówków, potem wyciąć z zawartości pliku cała partię danych i hurtem ją zamienić na tablicę za pomocą Spreadsheet String to Array.

powinno zadziałać minimalnie lepiej niż pętla while ;)
- jogurt_owocowy
- Posty: 1317
- Rejestracja: 30 lis 2004 00:00
- Wersja środowiska: LabVIEW 2015
- Lokalizacja: Kraków
Re: Wczytanie danych z pliku ( a właściwie konwersja na ta
Chodzi mi o namierzenie nagłówkow po to, żeby wyjąć dane spomiędzy nich i hurtem zamienić na tablicę (, z której potem juz bez filozofii można wydobyć kolumnę zetów). Teraz pytanie jak to zrobić najszybciej nie polegając jednocześnie na informacji, że nagłówek jest co 4000 czy ileś tam linii.
W pętli ładniej widać co się dzieje ] Ale o to chodzi Jak to zrobić najszybciej?powinno zadziałać minimalnie lepiej niż pętla while
Ostatnio zmieniony 12 gru 2007 10:46 przez jogurt_owocowy, łącznie zmieniany 1 raz.