2017-09-03 5 views
1

Comment ajouter un vecteur de secondes à l'heure HH: mm: ssPM dans MATAB?Ajouter des secondes incrémentantes à l'heure en HH: mm: format ssPM

J'ai habituellement cette façon sympa dans Excel pour convertir le format numérique normal en heure et minutes et sec. formatage en utilisant la mise en forme personnalisée simple de la cellule, mais quand je mets le code ci-dessous dans MATLAB, au lieu d'incrémenter en quelques secondes, il ajoute en quelques jours!

time = 1+0:50000+0;  % sec 

% To show date as plot label it should be converted from numbers to letters 
hr_matlab = time' + datenum('4:10:44 PM'); 
hr= datestr(hr_matlab, 'HH:MM:ssPM'); 

figure(222) 
plot(hr,S,'-b','LineWidth',2) 

J'utilise MATLAB2014a et n'ont pas accès à la fonction datetime.

Répondre

1

datenum convertit la date en un nombre qui représente jours en tant que nombres entiers. Pour cette raison, lorsque vous ajoutez le vecteur [1,2,3, ...], vous ajoutez des jours à votre heure fixe ('4:10:44 PM').

si vous souhaitez l'ajouter en secondes, vous devez diviser time en quantité de secondes par jour:

hr_matlab = (time')/86400 + datenum('4:10:44 PM'); 
+1

conjugué complexe transpose '' 'n'est pas nécessaire ici –

+0

Je voulais juste garder le format de l'OP, donc il peut voir exactement où le correctif dans le code. Ce n'est pas grave quand vous avez un vecteur de nombres naturels. Mais peut-être que la bonne façon devrait être «temps», merci pour l'attention. – Adiel

+2

Cela compte vraiment. S'habituer aux mauvaises pratiques * est important. –

1

Une option simple consiste à ajouter deux date numbers:

hr_matlab = datenum('4:10:44 PM') + datenum(0, 0, 0, 0, 0, time.');