Zaloguj się
Blog na Matlab.pl
Forum polskich użytkowników
 
UŻYTKOWNICY GRUPY PROFIL Zaloguj się, by sprawdzić wiadomości FAQ
 



Napisz nowy temat     Odpowiedz do tematu Zobacz poprzedni temat :: Zobacz następny temat

Wczytanie danych txt
Forum MATLAB Strona Główna-> MATLAB
Post Wysłany: 7 Styczenia 2017, Sob 1:10 pm Temat postu: Wczytanie danych txt Odpowiedz z cytatem
 
AUTOR:
Haxiu
Początki pisania


Dołączył: 07 Sty 2017
Posty: 9


Ogląda profil użytkownika Wyślij prywatną wiadomość
Witam,

mam problem z wczytaniem pliku txt z typowymi latami meteo.
O ile mogę użyć standardowo funkcji load XXX.txt i to działa, gdy usunę z pliku dwa pierwsze wiersze.
Jednak czy da się zrobić tak, aby jakoś to wczytać bez usuwania tych wierszy ?
Przy funkcji load wyskakuje błąd, że ilość kolumn musi się zgadzać z ilością z wiersza wcześniej.

Pierwszy wiersz to jest lokalizacja danego miejsca plus numer ISO i jakieś inne oznaczenie, nie wiem co to jest. Wink
Drugi wiersz to już nagłówki danych, a od trzeciego wiersza to już właściwe dane.
Czy da się jakoś wczytać oryginalny plik txt, ale żeby pomijał dwa pierwsze wiersze, a pozostałe dane były traktowane jako dane liczbowe, a nie tekstowe?

Poniżej jest link do przykładowego pliku ze strony Ministerstwa.

http://mib.gov.pl/files/0/1796817/wmo121000iso.txt

Pozdrawiam
Haxiu


 

Post Wysłany: 7 Styczenia 2017, Sob 4:19 pm Temat postu: Plik tekstowy Odpowiedz z cytatem
 
AUTOR:
Jacek Konieczny
Może pisać książki


Dołączył: 31 Mar 2009
Posty: 281
Skąd: Poznań


Ogląda profil użytkownika Wyślij prywatną wiadomość Odwiedź stronę autora
Do wczytania takiego pliku ( w którym pierwszy wiersz zawiera napisy opisujący poszczególne kolumny - "rubryki" ) należy użyć funkcji 'textread' ;
funkcji tej należy użyć z deklaratorem 'headerlines'. Za tym deklaratorem podajemy liczbę pocżątkowych wierszy, które funkcja 'textread' ma zignorować przy wczytywaniu danych z pliku ( w przypadku tego pliku podajemy oczywiście 1 ). Wówczas funkcja 'textread' wczyta z pozostałych wierszy te dane, które ma wczytać ( np. liczbowe ).


 

Post Wysłany: 7 Styczenia 2017, Sob 4:23 pm Temat postu: Korekta Odpowiedz z cytatem
 
AUTOR:
Jacek Konieczny
Może pisać książki


Dołączył: 31 Mar 2009
Posty: 281
Skąd: Poznań


Ogląda profil użytkownika Wyślij prywatną wiadomość Odwiedź stronę autora
Poprawiam ! W przypadku pliku `wmo121000iso.txt` należy oczywiście "zgubić" dwa początkowe wiersze.


 

Post Wysłany: 8 Styczenia 2017, Nie 2:48 am Temat postu: Odpowiedz z cytatem
 
AUTOR:
Haxiu
Początki pisania


Dołączył: 07 Sty 2017
Posty: 9


Ogląda profil użytkownika Wyślij prywatną wiadomość
Wpisałem taką formułkę:
A=textread('Dane.txt','headerlines',2);
Po pierwsze wyskakuje powiadomienie, że funkcja textread zostanie niebawem usunięta i zaleca się zastosowanie funkcji textscan.
Dodatkowo wypluwa mi takie błędy:

Error using dataread
Number of outputs must match the number of unskipped input fields.

Error in textread (line 175)
[varargout{1:nlhs}]=dataread('file',varargin{:}); %#ok<REMFF1>

Error in test (line 4)
A=textread('Dane.txt','headerlines',2);

Zrobiłem to jeszcze tak:
M=dlmread('Dane.txt','',2,0);
I mam wrażenie, że jest ok ...

Dziękuję za poprzednią odpowiedź, bo mnie trochę nakierowała na to moje rozwiązanie, ale czy jest ono poprawne ?

Pozdrawiam
Haxiu


 

Post Wysłany: 8 Styczenia 2017, Nie 12:12 pm Temat postu: Szczegóły dotyczące funkcji 'textread' Odpowiedz z cytatem
 
AUTOR:
Jacek Konieczny
Może pisać książki


Dołączył: 31 Mar 2009
Posty: 281
Skąd: Poznań


Ogląda profil użytkownika Wyślij prywatną wiadomość Odwiedź stronę autora
Na początek drobne wyjaśnienie dotyczące funkcji 'textscan' ; funkcja ta różni się od funkcji 'textread' jedynie tym, że wymaga uprzedniego ( wstępnego ) otwarcia pliku ( przy pomocy funkcji 'fopen' ). Wówczas pierwszym parametrem funkcji 'textscan' nie jest nazwa pliku, ale zmienna plikowa utworzona w momencie otwarcia pliku ( wygenerowana przez funkcję 'fopen' ). Funkcja 'textread' wymaga na ogół podania ( jako drugiego z argumentów ) tzw. "łańcucha formatującego" ; ów 'łańcuch formatujący' deklaruje typ danych, które chcemy wczytywać. Założmy, że chcemy wczytać dane z pliku, który zawiera dwie kolumny liczb rzeczywistych, a pierwszy wiersz pliku jest wierszem nagłówków. Używamy wówczas składni :

[ kol_1 , kol_2 ] = textread ( 'plik.txt' , '%f%f' , 'headerlines' , 1 ) ;

Wówczas pierwsze kolumna z pliku zostanie wczytana jako wektor 'kol_1', a druga kolumna z tego samego pliku zostanie wczytana jako wektor 'kol_2'. Deklarator '%f' oznacza, że mają być wczytywane dane typu "zmienno-przecinkowego" ( od "float" ).


 

Forum MATLAB Strona Główna-> MATLAB
Wyświetl posty z ostatnich:   

Napisz nowy temat     Odpowiedz do tematu Zobacz poprzedni temat :: Zobacz następny temat

Wszystkie czasy w strefie CET (Europa)

Skocz do:  

Statystyki forum:



Od dnia 08.06.2006 forum odwiedzano 34565786
Najwięcej użytkowników 266 było obecnych 19 Lutego 2015, Czw 7:03 pm

Aktualnie online:




Najnowsze posty na forum:
Wartości w strukturze i ich porównanie  (23 Lutego 2017, Czw 9:33 pm)
Problem optymalizacji wielokryterialnej  (15 Lutego 2017, Sro 12:06 am)
Zadanie z matlaba  (14 Lutego 2017, Wto 6:48 pm)
pomoc przy wykresie funkcji kwadratowej  (13 Lutego 2017, Pon 7:54 pm)
Współrzędne kartezjańskie uwikłane przy przejściu z układu ?  (13 Lutego 2017, Pon 2:20 pm)
nowe okno po kliknięciu na wykres  (12 Lutego 2017, Nie 6:41 pm)
Pomoc w Matlabie z macierzami  (12 Lutego 2017, Nie 10:28 am)
dodawanie szumu - prosba o pomoc  (10 Lutego 2017, Pią 11:51 am)
wykres do Octave - prośba o pomoc  (9 Lutego 2017, Czw 9:51 pm)
wpisywanie danych do tablicy  (8 Lutego 2017, Sro 8:17 pm)
Twoje prawa:
Nie możesz pisać nowych tematów
Nie możesz odpowiadać w tematach
Nie możesz zmieniać swoich postów
Nie możesz usuwać swoich postów
Nie możesz głosować w ankietach
Nie możesz załączać plików na tym forum
Nie możesz ściągać plików na tym forum