2013-11-15 2 views
0

У меня есть вопрос: У меня есть вопрос: У меня есть загрузка 1 rainfall data int Текстовый файл * .txt в него включены тексты, заголовок, нижний текст и данные, а также некоторые пробелы между данными. Когда я импортирую файл в Matlab, Matlab не смог определить каждую ячейку, включая столбец, и строки (без разделителя)Импорт текстового файла без разделителя в matlab

0 Мне нравится, конвертировать текстовый файл в Excel и легко и просто удалять столбцы и строки сохранить с помощью других файлов. Но мои данные до 846000 данных установлены ~ 24h x 30days x 12month x 20 лет, которые объединяли много разных файлов для каждой информации. Так что трудно сделать ручное преобразование, как я. Мой советник сказал мне, что Matlab CODE может это сделать хорошо. Кто-нибудь может помочь мне в этой проблеме?

Оригинал: https://drive.google.com/file/d/0By5tEg03EXCpekNaemItMF85ZWs/edit?usp=sharing

ответ

1

Если вы на Mac или Linux, я предлагаю преобразовать эти файлы данных с помощью оболочки в формат Matlab полюбит, а не пытаться сделать Matlab это сделать. Это работает и в Windows, но только если у вас установлена ​​Unix-подобная оболочка, такая как MinGW, Cygwin или Git Bash.

Например, это преобразует раздел сырых данных файла, разделяемой в CSV:

cat "$file" | sed 's: *:,:g' | sed 's:^,::' | grep '^[0-9]' > "$file".csv 

Вы можете затем цикл через все файлы исходных данных и объединить их в один файл CSV, как это:

for file in *.txt; do 
    cat "$file" | sed 's: *:,:g' | sed 's:^,::' | grep '^[0-9]' >> all.csv 
done 

Если вам нужно сохранить, например, какой год и какую метеорологическую станцию, вы могли бы немного поучаствовать в этом и зафиксировать эти значения в начале каждого файла и превратить их в столбцы на каждой строке. Вот пример, который захватывает год и идентификатор метеостанции и вставляет его в виде столбца перед каждым днем.

for file in *.txt; do 
    station="$(grep 'Station -' "$file" | sed 's: *Station - ::' | sed 's: .*::' | uniq)" 
    year="$(grep 'Water Year' "$file" | awk '{print $4}')" 
    cat "$file" | sed 's: *:,:g' | grep '^,[0-9]' |\ 
    sed "s/^,/$station,$year,/" >> all.csv 
done 
+0

Спасибо, что очень хорошо ответил. Я использую систему Windows 7. Я хотел бы иметь командный код в окнах matlab и когда Enter, все будет сделано, поскольку программа автоматически импортирует текстовый файл в matlab и преобразует его в ячейки, а затем записывает его в новый Excel или текстовый файл с разделителем формата , благодаря – HongQuan

Смежные вопросы