Я пытаюсь построить почасовые данные. Проблема в том, что дата находится в одном столбце массива ячеек, а час - в следующем столбце. Как я могу построить данные с осью х, учитывая дату и час? Я думаю, что лучший способ состоял бы в том, чтобы объединить два столбца и использовать их как мой x.MATLAB Объединение даты и часа из двух столбцов ячейки
% Plot data for the month of June, 2007
% Uses the FileExchange file addaxes.m to plot 3 different y axes to
% account for the different units
clear
clc
load WI_200706_Pollution.mat;
%% Order of Columns
% 5. State Code
% 6. County Code
% 7. Site Num
% 13. Date GMT
% 14. 24 Hour GMT
% 17. Sample Measurement
%% Sort data by State Code, County Code, Site Code, Date GMT, Hour GMT
% PM25
PM25_State = sortrows(PM25,5);
PM25_County = sortrows(PM25_State,6);
PM25_Site = sortrows(PM25_County,7);
PM25_Date = sortrows(PM25_Site,13);
PM25_Hour = sortrows(PM25_Date, 14);
% SO2
SO2_State = sortrows(SO2,5);
SO2_County = sortrows(SO2_State,6);
SO2_Site = sortrows(SO2_County,7);
SO2_Date = sortrows(SO2_Site,13);
SO2_Hour = sortrows(SO2_Date, 14);
% Pull out data
PM25_data = PM25_Hour(:,17); % ug/L3
NO2_data = NO2_Hour(:,17); % ppb
CO_data = CO_Hour(:,17); % ppm
O3_data = O3_Hour(:,17); % ppm
SO2_data = SO2_Hour(:,17); % ppb
clearvars -except -regexp _data _Hour % Clear all variables except the sorted _Hour files and the _data files
%%%%%%%
%% Plot PM2.5 daily data
% Axis
DateString = PM25_Hour(2:end,11); % Pull out dates
formatIn = 'yyyy-mm-dd';
x1 = datenum(DateString,formatIn); % Convert to datnum
y1 = PM25_data(2:end); % Plot data
%% Plot SO2 hourly data
% Axis
date = datenum(SO2_Hour(2:end, 11));
hour = datenum(SO2_Hour(2:end, 12));
DateString = datenum(strcat(date, hour), 'yyyy-mm-ddHH:MM'); % Pull out dates
x5 = datenum(DateString); % Convert to datnum
y5 = SO2_data(2:end); % Plot data
% Convert cells to double
y1 = str2double(y1);
y5 = str2double(y5);
% Plot
h = figure; % To make the figure not show up, use 'h = figure('visible', 'off')';
plot(x5, y5, 'k', 'LineWidth', 1, 'Marker', 'o'); % Black line of width 2. Circular marker of color blue
addaxis(x1, y1);
addaxislabel(1,'ppb');
addaxislabel(2,'ug/CL');
grid on; % Turn on grid for plot
legend('PM2.5 (ug/CL', 'SO2 (ppb)');
Код был сокращен, чтобы включать только две из пяти переменных, которые я рассматриваю. PM2.5 - это ежедневные данные, поэтому нет проблем с этим. С SO2 я пытаюсь совместить дату и время в разделе «Plot SO2 hourly data». Прямо сейчас, я получаю эту ошибку:
Error using datenum
DATENUM failed.
Caused by:
Error using dtstr2dtnummx
Failed on converting date string to
date number.
Если я не совместить дату и время, я получаю кучу точек идут вверх по вертикали на каждый день. Как я могу по-прежнему держать ось x в день для PM2.5, но разрешить SO2 распространяться в течение дня?
Как использовать разделитель? Просто добавление «-» ничего не меняет. Ошибка возникает сразу после 'DateString = datenum (strcat ...' – shizishan
Что такое ввод данных? – Daniel
Вот ссылка на ссылку на мой скрипт (это более длинный скрипт, но такая же идея - у меня есть только несколько переменных в середине где я еще не пытался совместить дату и время) и файл .mat с данными. https://www.dropbox.com/sh/hpjelnbzf9m069h/_wef_rKA0W – shizishan