2013-03-31 5 views
1

1. Как правильно прочитать эти данные, чтобы данные правильно обрабатывались? Я пытаюсь объединить строки, которые я прочитал из файла, но результат, который я получаю, путается. Выходной сигнал является осью x. Кроме того, расстояние от оси x имеет цифры вместо строки, которую я хочу. Файл имеет 4 столбца, дату, время, температуру и значение. Дата «01.01.2013» и время «09:08:02», используя данные, приводит к тому, что обе строки не показаны.

Также, если я хочу использовать только первый столбец (с датой), как я могу это сделать? Поскольку использование datenum (MyData {1}) результаты "Невозможно разобрать дату 01.01.2013"

... 
mydata = textscan(fid, '%s %s %f %f', 'delimiter',';', 'HeaderLines',1); 
date={}; 
temp={}; 
.. 
date{1}=datenum(strcat(mydata{1},{' '},mydata{2})); 
... 

2. Как исправить ось клещей?

Затем я пытаюсь построить данные с использованием plotyy и хочу, чтобы ось x была датой, но я получаю две разные метки осей.

Вот код, я использую:

temp = mydata{4}; 
plotyy(date,temp,date,2*temp); 
datetick('x','mmm.dd,yyyy'); 

Вот результирующее изображение:

enter image description here

--------------- UPDATE ---------------------------------------

Вот код:

fid = fopen('test2.txt','r'); 
mydata = textscan(fid, '%s %s %f %f', 'delimiter',';', 'HeaderLines',1); 
fclose(fid); 

date=datenum(strcat(mydata{1},{' '},mydata{2}),'mmm.dd,yyyy HH:MM:SS'); 
temperature=mydata{3}; 
value=mydata{4}; 


[AX,H1,H2]=plotyy(date,temperature,date,value,'plot'); 
set(get(AX(1),'Ylabel'),'String','Temperatures'); 
set(get(AX(2),'Ylabel'),'String','Value'); 



set(H1,'LineStyle','--'); 
set(H2,'LineStyle',':'); 
datetick(AX(1),'x','mmm.dd,yyyy'); 


title('Temperatures - Values'); 
xlabel('Date') 

и файл

Date;Time;Temp;value 
Jan.01,2013; 11:00:00;20;10       
Feb.08,2013; 12:00:00;23;11 
Mar.04,2013; 04:02:00;24;15 
Apr.10,2013; 08:04:00;28;20 
May.10,2013; 12:05:00;32;30 
Jun.04,2013; 10:06:0;33;27 

ответ

1

1. Синтаксический вход

Вы получаете в «не может анализировать» ошибку, потому что вы также не включая формат строки (formatIn). См. Документацию по адресу datenum.

Если вы хотите конвертировать только первый столбец с датой, это будет выглядеть так:

date=datenum(mydata{1},'mm.dd.yyyy'); 

Если вы хотите, чтобы преобразовать как первый и второй столбцы, попробуйте:

date=datenum(strcat(mydata{1},{' '},mydata{2}),'mm.dd.yyyy HH:MM:SS'); 

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

% data.txt 
% 01.01,2013; 11:00:47;10;20 
% 01.02,2013; 11:00:57;10;40 

fid = fopen('data.txt'); 
mydata = textscan(fid, '%s %s %f %f', 'delimiter',';'); 
date=datenum(strcat(mydata{1},{' '},mydata{2}),'mm.dd,yyyy HH:MM:SS'); 

2. Получение правильных участков

Есть два различных х-тиков для plotyy команды. Установив datetick так, как вы это делали, вы меняете только один из них. Вместо этого измените первый галочку на галочку до отметки даты и установите для остальных x-тиков значение.

temp = mydata{4}; 
[AX,H1,H2] = plotyy(date,temp,date,2*temp); 
datetick(AX(1),'x','mmm.dd,yyyy'); 
set(AX(2),'XTick',[]) 
+0

: Это дает мне сообщение «Не удалось преобразовать строку даты в число». Я использую «01.01,2013; 11: 00: 47; 10; 20 \t \t \t \t \t \t \t "и datenum (strcat (MYDATA {1}, {» '}, MYDATA {2}),' mmm.dd, YYYY HH: MM: СС ') – George

+0

: Я беру цифру, которую я загрузил. Это бесполезно с значениями оси x. – George

+0

: Если я использую команду «XTick», она улавливает меня «Недопустимое свойство найдено». Он удаляет все тики по оси y и даже title. И по оси x появляется число «7.353». Я хочу, чтобы на оси x появлялось «Jan.01,2013 11:00:00». – George