2017-07-13 6 views
-1

J'ai une acquisition par un ph-mètre, divisée en 3 jours. J'ai extrait l'heure au format hh:mm:ss pour chaque jour. Cela signifie que le premier jour est de 12:32 à 14:39, le second de 14:12 à 16:17 etc. Idem pour la température (de 23 à 24 °, 2 jours de 22 à 24 etc.).Axes de temps et de température triés par fonction de traçage dans matab

Maintenant, je dois tracer les données (phwrtT et Time), mais si je peux concaténer les 3 temps et T vecteurs, ou créer un vecteur de colonne pour chaque temps et la température, Matlab trie automatiquement l'augmentation des valeurs des valeurs de l'x -axe de l'intrigue. J'ai besoin de conserver les valeurs d'origine le long des axes (cela signifie que les valeurs doivent être 14:3214:3314:3412:2412:25 et ainsi de suite, même pour la température) parce que je dois préserver la continuité des données le long du temps d'acquisition.

+1

A quoi ressemble votre code comme? – patrick

+0

Pouvez-vous modifier votre question pour inclure un [mcve] – Steve

Répondre

0

Convertissez votre hh: mm: ss en datenum - probablement besoin d'ajouter le jour, le mois, l'année, donc c'est dans l'ordre correct que vous voulez. Ensuite, vous pouvez simplement définir votre tick pour être HH: MM: SS ou secondes ou tout ce dont vous avez besoin. Regardez ici: https://www.mathworks.com/help/matlab/ref/datetick.html

0

Depuis 2014b, vous pouvez utiliser datetime.

Choisissez soit les dates réelles d'enregistrement, ou certaines dates arbitraires qui sont un jour d'intervalle, et attribuer la partie date à vos données comme

% Create 3 random time arrays of the format 'hh:mm:ss' 
t = [randi([10,14], 10,1), randi([0,59], 10,1), randi([0,59], 10,1)]; 
T1 = [num2str(t(:,1), '%02i'), repmat(':', 10, 1), num2str(t(:,2), '%02i'),repmat(':', 10, 1), num2str(t(:,3), '%02i')]; 
t = [randi([10,14], 10,1), randi([0,59], 10,1), randi([0,59], 10,1)]; 
T2 = [num2str(t(:,1), '%02i'), repmat(':', 10, 1), num2str(t(:,2), '%02i'),repmat(':', 10, 1), num2str(t(:,3), '%02i')]; 
t = [randi([10,14], 10,1), randi([0,59], 10,1), randi([0,59], 10,1)]; 
T3 = [num2str(t(:,1), '%02i'), repmat(':', 10, 1), num2str(t(:,2), '%02i'),repmat(':', 10, 1), num2str(t(:,3), '%02i')]; 

% Convert to dates on consecutive days 
D1 = datetime(strcat('2000-01-01-', T1), 'inputformat', 'yyyy-MM-dd-HH:mm:ss'); 
D2 = datetime(strcat('2000-01-02-', T1), 'inputformat', 'yyyy-MM-dd-HH:mm:ss'); 
D3 = datetime(strcat('2000-01-03-', T1), 'inputformat', 'yyyy-MM-dd-HH:mm:ss'); 

% Plot 
data = rand(30,1); 
plot([D1, D2, D3], data);