Время рассеяния ошибок в зависимости от скорости ветра (данные из таблицы) MATLAB - PullRequest
0 голосов
/ 01 июня 2018

Я пытаюсь сделать простой график рассеяния в MATLAB со временем по оси X и скоростью ветра по оси Y.Я загрузил свои данные из текстового файла в виде таблицы, а затем попытался использовать table2array для построения графика, поскольку ему нужны числовые значения, а не данные таблицы.Я также попытался использовать double и получил еще одну ошибку.

Сообщение об ошибке: Ошибка с использованием разброса (строка 55) Входные аргументы должны быть числовыми или объектами, которые можно преобразовать в double.

Ошибкав ветровых преобразованиях (строка 18) разброс (время, wnd_TS)

Я не уверен, будет ли проблема с временами в виде строк.

T = readtable('allunderway.txt', 'HeaderLines', 2);
%A = table2array(T)

date = T(:,1);
time = T(:,2);
wnd_TD = T(:,10);
wnd_TS = T(:,11);
table2array(wnd_TS);
table2array(time);

%double(wnd_TS);
scatter(time,wnd_TS)

data file

Ответы [ 2 ]

0 голосов
/ 01 июня 2018

Более простой способ доступа к данным, содержащимся в таблице, состоит в использовании точечной нотации, например T.VarN , где N - номер интересующего вас столбца.

В вашем коде вы используете только «время» для графика, однако он состоит только из часов, минут и секунд.Я подозреваю, что для вашего графического анализа вам требуется комбинация как даты, так и часов.

Можно выполнять арифметическое сложение с датами и временем, однако требуется, чтобы две переменные имели одинаковый формат.Преобразуя обе даты в формат «ММ / ДД / ГГГГ ЧЧ: мм: СС», вы фактически изменяете данные переменных.Однако, как указано в документации :

Поскольку данные в первом столбце файла («дата») не имеют информации о времени, время результирующих значений даты и временипо умолчанию до полуночи.Поскольку данные во втором столбце файла («время») не имеют ассоциированной даты, дата значений datetime по умолчанию устанавливается на текущую дату.

Когда вы добавляете переменные date и time вместевместе вы можете добавить дату ('MM / dd / yyyy') date ко времени ('HH: mm: SS') time .

Ниже приведен пример преобразования и добавления даты и времени.Переменные дата и время до преобразования:

date = 05/04/2011
time = 00:00:42

После преобразования:

date = 05/04/2011 00:00:00
time = 06/01/2018 00:00:42

Добавление двух:

05/04/2011 00:00:42

Код, который читает таблицу и строит графикдиаграмма рассеяния:

%Read table.
T = readtable('allunderway.txt', 'HeaderLines', 2);

%Access data of interest from table.
date = T.Var1;
time = T.Var2;
wnd_TS = T.Var11;

%Convert variable time to datetime.
time = datetime(time,'Format','HH:mm:SS');

%Add hours, minutes and seconds to variable date.
date = datetime(date,'Format','MM/dd/yyyy HH:mm:SS');

%Add month, day and year to variable time.
time = datetime(time,'Format','MM/dd/yyyy HH:mm:SS');

%Combine date and time variables.
fullt = date+timeofday(time);

scatter(fullt,wnd_TS);

Вывод кода представляет собой необходимый график рассеяния:

enter image description here

Более подробную информацию можно найти наобъединение даты и времени из отдельных переменных здесь .

0 голосов
/ 01 июня 2018

Почему так много дополнительной работы.Вы могли бы просто использовать scatter(datenum(T.time),T.wnd_TS).Это должно сделать работу и сэкономить все дополнительные усилия.

...