2013-11-28 4 views
0

Я надеюсь, что кто-то может помочь мне с этой проблемой:Загрузка txt.file в MATLAB

мне нужно загрузить txt.file в MATLAB. Txt.file взгляд что-то вроде этого:

1 80 1 . 32 
1.374 1 0 . 0 

Он содержит 38 переменных и 11,674 наблюдений (я знаю это, потому что я успешно загрузили данные в STATA). '' отсутствуют значения. Я использую следующий код:

data = textread('data.txt','','delimiter','.','emptyvalue',NaN); 

Это не дает мне никаких ошибок. Однако результирующие данные содержат только 11674 строки и 12 столбцов. При сравнении данных в matlab с текстовым файлом кажется, что Matlab только считывает первую четверть текстового файла.

Я также попытался загрузить данные в STATA, экспортировать его, чтобы преуспеть, а затем использовать:

data = xlsread('data.xls','Sheet1'); 

Это не работает, либо потому, что у меня нет окон. Matlab сообщает об ошибке:

Warning: Could not start Excel server for import, 'basic' mode will be used. 
Error using xlsread (line 232) 
XLSREAD unable to read sheet Sheet1. 
Error reading record for cells starting at column 0. Try saving as Excel 98. 

Если вам нужна дополнительная информация, пожалуйста, дайте мне знать.

Благодарим вас за внимание!

+1

Поддерживает ли '.' когда-либо десятичную точку или это только маркер« без данных ». Это очень плохой выбор характера ... В любом случае вы не должны рассматривать его как разделитель. Во второй строке у вас есть номер '1.374'. Это значит, что это единственный номер, или «1, отсутствует, 374»? – Floris

+1

Не каждый. является значением missin. 1.374 - это число. Не 1, отсутствует, 374. Однако txt2mat решил это для меня. – Jesper

ответ

4

txt2mat [1] должен решить вашу проблему. Если вы используете режим чтения «block», он также намного быстрее, чем обычный метод рисования.

Вы можете заполнить нераспознанные (например, пустые ячейки) NaN и определить их впоследствии.

В качестве альтернативы вы можете заменить точки уже во время импорта файла:

DATA = txt2mat(filename, 'ReplaceChar', '. '); 

[1] http://www.mathworks.com/matlabcentral/fileexchange/18430-txt2mat

+0

Замечательно! Проработал просто отлично - спасибо! – Jesper

2

Если я не ошибаюсь . не разделителем. Что вы можете сделать, чтобы избавиться от . в файле (который вызывает проблему), чтобы заменить его NaN либо в первую очередь, или если вы не можете, сделать это после того, как:

str = fileread('data.txt'); 
data_str = strrep(str, ' . ', ' NaN '); 

Обратите внимание на два пустых пространства до и после . и NaN.

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

Надеюсь, что это поможет.

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