52 / 47 / 19
Регистрация: 05.04.2015
Сообщений: 227
|
|
1 | |
Чтение текстового файла27.11.2015, 15:38. Показов 19035. Ответов 19
Метки нет (Все метки)
Люди добрые, помогите с одной проблемой разобраться! Есть текстовый файл в с набором данных (см. пример). Проблема состоит в том, чтобы получить доступ к последним четырем столбцам. Когда я читаю первые 4 столбца - никаких проблем нет, программа все читает. Но, когда я обращаюсь к 5-му и далее столбцам, тут начинаются чудеса - программа читает только до 5-ой строки!!! Хотел заполнить отсутствующие значения на NaN - но тоже ничего не получается.
fid = fopen('example.txt'); % T = textscan(fid, '%f%s%f%f %*[^\n]'); % для первых 4-х столбцов T = textscan(fid, '%*f%*s%*f%*f%*f%*f%*s%f%f%f%f'); fclose(fid); x = T{1}; y = T{2};
0
|
27.11.2015, 15:38 | |
Ответы с готовыми решениями:
19
Чтение текстового файла Чтение текстового файла Чтение информации из текстового файла Чтение текстового файла с запятой в качестве разделителя |
52 / 47 / 19
Регистрация: 05.04.2015
Сообщений: 227
|
|
27.11.2015, 16:26 [ТС] | 3 |
да, в этом и вся проблема что файл не полный, но по факту надо работать с этим файлом. Пока, я скачиваю этот файл, затем через Excel удаляю эти столбцы и спокойно читаю. Есть одна идея - это читать все столбцы не как %f, а как %s. В этом случае данные с последних столбцов "перераспределяются" на предыдущие и надо как то эти данные отделить. Короче, если кто сталкивался с такой проблемой, просьба откликнутся...
0
|
27.11.2015, 16:33 | 4 |
сталкивался.
варианты: или изменить формат файла (например, писать на пустые места символ какой-нить типа * или -), или читать построчно (оп сути, это не так уж и накладно, если файл не под ГБ)... Через конвертацию в xls тоже конечно можно, но тут вопрос стоимости - не дешевле ли просто читать построчно, будет ли хоть какой-нибудь выигрыш от конвертации?
0
|
52 / 47 / 19
Регистрация: 05.04.2015
Сообщений: 227
|
|
27.11.2015, 17:17 [ТС] | 5 |
На самом деле этот пример формата .txt. А в реальности данные доступны онлайн по адресу http://datacenter.iers.org/eop... /latest/12. И смысл состоит в том, чтобы каждые пару месяцев я хочу обновлять мои данные с сайта. А вот на счет построчно читать - я пытался, но ничего не получилось. Может кто-нибудь подскажет?
0
|
9 / 9 / 3
Регистрация: 25.10.2015
Сообщений: 22
|
||||||
28.11.2015, 14:41 | 6 | |||||
У вас файл форматирован по позициям символов. То есть 1:8 символы это первая колонка чисел, 9:11 это вторая колонка и тд. Смущает, что последняя строка "оборвана" и не заканчивается 0d0axHH... возможно это просто результат небрежного копирования куска исходного файла в "пример".
Во всяком случае, посмотрите этот код:
87 -- количество "значащих" символов в строках файла перед пробелами. Как видно из кода, я исходил из того, что числа в файле всегда с десятичной точкой. Если колонка целочисленная, то используйте dimC00=repmat([46 48],nC,1); .... Вообще, если по-уму, то dimC лучше сразу переопределить в char: D=char(dimC), потом читать каждую колонку данных с соответствующих знакомест, и через find заменять строку с пробелами на 0, а потом уже использовать str2num. ....да и строк оборванных, по вашей ссылке нет, что упрощает код.
0
|
52 / 47 / 19
Регистрация: 05.04.2015
Сообщений: 227
|
||||||
30.11.2015, 10:20 [ТС] | 7 | |||||
Спасибо, конечно, за ответ, но или у нас разные версии Матлаба (у меня 2015а), или я ничего не понял. Мне конкретно нужны столбы 16 (-99.920 ....) и 18 (-13.258 ...), т.е. условно х = 16-й столбец, у = 18-й столбец. Вот если бы ваш код выдавал такой результат, это было бы очень круто, потому что я сам через ж.... что то придумал и вроде работает.
0
|
9 / 9 / 3
Регистрация: 25.10.2015
Сообщений: 22
|
|
30.11.2015, 12:15 | 8 |
Странно... у меня работало..
Выложите, пожалуйста, пару примеров файлов "как они есть", а не кусок копипастой. И еще, если есть, то описание к колонкам или описание формата... по ссылке я вижу, что сначала идет дата: "15 9 1 57266.00"... причем в своеобразном таком виде... Сделаем вам функцию))
0
|
52 / 47 / 19
Регистрация: 05.04.2015
Сообщений: 227
|
|
30.11.2015, 13:43 [ТС] | 9 |
Ссылка http://datacenter.iers.org/eop... /latest/12
Описание формата в прилагаемом файле. Нужны колонки 98-106 (dPSI) и 117-125 (dEPSILON).
0
|
52 / 47 / 19
Регистрация: 05.04.2015
Сообщений: 227
|
|
30.11.2015, 13:43 [ТС] | 10 |
Описание формата
0
|
52 / 47 / 19
Регистрация: 05.04.2015
Сообщений: 227
|
|
30.11.2015, 13:47 [ТС] | 11 |
или вот еще ссылка с большим количеством данных
http://datacenter.iers.org/eop... v/latest/8
0
|
3390 / 1913 / 571
Регистрация: 09.04.2015
Сообщений: 5,365
|
||||||
01.12.2015, 09:55 | 12 | |||||
Сообщение было отмечено murzik07 как решение
Решение
Если данные находятся в фиксированных колонках, то посмотри пример может поможет
2
|
52 / 47 / 19
Регистрация: 05.04.2015
Сообщений: 227
|
|
01.12.2015, 10:34 [ТС] | 13 |
спасибо, все работает.
0
|
31 / 31 / 4
Регистрация: 23.03.2014
Сообщений: 180
|
|||||||||||
04.12.2015, 06:12 | 14 | ||||||||||
murzik07, как вариант- (matlab 2014a)
0
|
52 / 47 / 19
Регистрация: 05.04.2015
Сообщений: 227
|
|
04.12.2015, 10:01 [ТС] | 15 |
Крутая прога, спасибо. Но, как сделать так чтобы он записывал данные не на 'Desctop' а на флешку 'F:\MATLAB\АстроУОЛ\Data_IERS' (у меня ошибку выдает). И что делать с открывающимся окном командной строки?
0
|
31 / 31 / 4
Регистрация: 23.03.2014
Сообщений: 180
|
||||||
04.12.2015, 11:48 | 16 | |||||
1
|
52 / 47 / 19
Регистрация: 05.04.2015
Сообщений: 227
|
|
04.12.2015, 13:12 [ТС] | 17 |
О, спасибо. Как я понимаю ты крутой прогер. Тогда вот такой вопрос (если будет время) - вот по этому адресу есть http://webhome.weizmann.ac.il/... ation.html одна программа, которую я очень хочу установить на компьютер но у меня ошибку выдает (см. рисунок). Очень большая просьба помочь
0
|
31 / 31 / 4
Регистрация: 23.03.2014
Сообщений: 180
|
|
04.12.2015, 23:45 | 18 |
Instellation script (Linux) - установка под линукс - нет возможности проверить
Individual functions can be downloaded through the table of functions webpage. - можно загрузить отдельные функции, ссылка - http://webhome.weizmann.ac.il/... ntent.html попробуйте по отдельности установить необходимые компоненты
0
|
52 / 47 / 19
Регистрация: 05.04.2015
Сообщений: 227
|
|
06.12.2015, 14:43 [ТС] | 19 |
А дело в том, что по отдельным компонентам не хватает одной М-функции. Есть программа tri_match_lsq.m которая после запуска выдает ошибку, что не хватает test_match. А этой функции нет в общем списке. Вот я и думаю, что она как то при полной установке появляется....???
0
|
31 / 31 / 4
Регистрация: 23.03.2014
Сообщений: 180
|
|
07.12.2015, 05:46 | 20 |
murzik07, возможно, если у вас windows попробуйте через virtualbox установить linux и запустить install_astro_matlab.m
в install_astro_matlab.m там ряд ошибок, возможно в linux заработает ) windows версии компонентов DS9 - http://ds9.si.edu/site/Download.html xpa - http://ds9.si.edu/site/XPA.html
0
|
07.12.2015, 05:46 | |
07.12.2015, 05:46 | |
Помогаю со студенческими работами здесь
20
Редактирование текстового файла Считывание с текстового файла Исключить нули из текстового файла Считывание столбцов текстового файла Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |