Strona 1 z 1
Wczytanie danych z pliku ( a właściwie konwersja na tablicę)
: 11 gru 2007 22:03
autor: andrzejg76
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
Re: Wczytanie danych z pliku ( a właściwie konwersja na ta
: 12 gru 2007 00:16
autor: jogurt_owocowy
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 :]
Re: Wczytanie danych z pliku ( a właściwie konwersja na ta
: 12 gru 2007 09:25
autor: andrzejg76
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
Re: Wczytanie danych z pliku ( a właściwie konwersja na ta
: 12 gru 2007 09:57
autor: vugie
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)
Re: Wczytanie danych z pliku ( a właściwie konwersja na ta
: 12 gru 2007 10:20
autor: jogurt_owocowy
Powstaje linijka zer na początku, ale z tym można sobie chyba poradzić...
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.
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 ]
Re: Wczytanie danych z pliku ( a właściwie konwersja na ta
: 12 gru 2007 10:34
autor: vugie
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
Re: Wczytanie danych z pliku ( a właściwie konwersja na ta
: 12 gru 2007 10:40
autor: Mikrobi
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.
Można i tak: wersja alternatywna dla
jogurta aka Jogurt Alternatywny:

powinno zadziałać minimalnie lepiej niż pętla while ;)
Re: Wczytanie danych z pliku ( a właściwie konwersja na ta
: 12 gru 2007 10:41
autor: jogurt_owocowy
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.
powinno zadziałać minimalnie lepiej niż pętla while
W pętli ładniej widać co się dzieje ] Ale o to chodzi Jak to zrobić najszybciej?