2015-03-01 3 views
0

Я пытаюсь импортировать данные из текстового файла в рабочую область с помощью функции readtable.Чтение таблицы из текстового файла

Структура текстового файла довольно просто, будучи составлена ​​4 столбцами типов даты, времени, целого числа и поплавка, соответственно, как показана в следующем минимальном примере:

2013-07-07 05:15:19 8 213.0

2013-07-07 05:15:19 11 109.0

2013-07-07 05:15:20 14 33.5

2013-07-07 05:15:24 56 182.0

Когда я пытаюсь загрузить данные:

data = readtable(filename,... 
       'Format','%{yyyy-MM-dd}D %{HH:mm:ss}D %d %f %*[^\n]',... 
       'ReadVariableNames',false); 

I ge т следующее сообщение об ошибке:

Error using textscan 
Badly formed format string. 

Error in table/readTextFile (line 160) 
raw = textscan(fid,format,'delimiter',delimiter,'whitespace',whiteSpace, ... 

Error in table.readFromFile (line 41) 
    t = table.readTextFile(filename,otherArgs); 

Error in readtable (line 114) 
t = table.readFromFile(filename,varargin); 

Если я пытаюсь вместо этого:

data = readtable(filename,... 
       'Format','%{yyyy-MM-dd}D%{HH:mm:ss}D%d%f%*[^\n]',... 
       'Delimiter',' ',... 
       'ReadVariableNames',false); 

я получаю точно такую ​​же ошибку.

Я проверил Mathwork's online documentation, но мне не удалось найти решение моей проблемы.

EDIT: На самом деле, желаемый формат таблица будет иметь DateTime колонки заменяющего дату и время колонны. То, что я делаю, присоединяется к датам и время вручную после прочтения таблицы. Если вы знаете способ импорта таблицы, объединяющей эти две переменные сразу, это было бы здорово.

+0

Вы используете R2014b +? Я не уверен, что в более ранних версиях существует форматы ''% {yyyy-MM-dd} D''stylepec. Если вы не используете самую последнюю версию, убедитесь, что вы читаете документацию, прилагаемую к вашей установке, а не онлайн-документацию (хотя есть [архивная документация] (http://www.mathworks.com/help /doc-archives.html)). – horchler

+0

@horchler Хорошо пятнистый! Это, кажется, проблема здесь, так как я запускаю Matlab R2013b, который, по-видимому, не распознает '% {fmt} D' formatspec. – POliveira

ответ

1

Первоначально, если вы будете делать это с форматом данных:

data = readtable('data.txt','Delimiter',' ','ReadVariableNames',false) 

вы получите массив данных NX4, так что вы можете работать с ним столько, сколько вы хотите.

Вы можете прочитать о том, как манипулировать с данными, импортируемых в виде таблицы here

+0

Это может сработать, но похоже, что он просто импортирует все как строки, поскольку все значения не являются числовыми. – horchler

+0

похоже, но данные доступны через фигурные скобки и, возможно, не самый эффективный способ переделать данные. Я добавил ссылку – madbitloman

+0

@madbitloman Я знаю об этом. На самом деле это то, что я делаю прямо сейчас. Мне просто интересно, есть ли лучший способ импортировать данные в нужный формат за один шаг вместо последующей обработки. – POliveira

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