Borrar filtros
Borrar filtros

Create a difference vector of time

2 visualizaciones (últimos 30 días)
Michela Longhi
Michela Longhi el 3 de Jul. de 2017
Comentada: dpb el 3 de Jul. de 2017
I have a matrix of times (HH:MM:SS) : the first column is the start-time and the second is the stop-time. I can extract each columns as:
fileID=fopen('Times.txt');
A = textscan(fileID,'%D %D');
start=A{1};
stop=A{2};
and now I want to create a new column vector with the subtraction between the start-time and the stop-time of each rows. With this new vector I will create a Histogram. So how can I create the difference vector??
Thanks
Michela
  6 comentarios
Jan
Jan el 3 de Jul. de 2017
Do you want to add the column in the file, or only inside Matlab to create the diagram directly?
Michela Longhi
Michela Longhi el 3 de Jul. de 2017
In Matlab

Iniciar sesión para comentar.

Respuesta aceptada

Image Analyst
Image Analyst el 3 de Jul. de 2017
How about:
A = readtable('Times.txt', 'Delimiter','\t','ReadVariableNames',false, 'datetime', 'text')
startTimes = A{:,1}
stopTimes = A{:,2}
elapsedTimes = etime(datevec(stopTimes), datevec(startTimes))
  1 comentario
Michela Longhi
Michela Longhi el 3 de Jul. de 2017
Yes!!! It works well!
Thanks so much
Michela

Iniciar sesión para comentar.

Más respuestas (1)

dpb
dpb el 3 de Jul. de 2017
I'd make a minor change--
A = cell2mat(textscan(fileID,'%D %D','collectoutput',1));
to convert the cell arrays to an array of datetime. Then as IA noted
E=etime(A:,1),A(:,2));
or
A(:,3)=etime(A:,1),A(:,2));
Or, it could be a good place for the table and you could use
T = readtable('Times.txt','Format','%D %D');
and then you've got the best of both worlds, data as a datenum for use with all its supporting functions such as etime and named identifiers for the variables rather than index expressions or making multiple variables explicitly.
T.Span=etime(T.start,T.stop); % add the elapsed time column to the table
You can also simply add/subtract datetime arrays with arithmetic operators to get another datetime array in "real" time units rather than the duration from etime if that's more suitable for the measure (altho I'm not positive if the histogram functions are aware of it so seconds is probably the better choice there).
  3 comentarios
Image Analyst
Image Analyst el 3 de Jul. de 2017
You can call readtable like I did. Did you even see my answer? It works.
dpb
dpb el 3 de Jul. de 2017
Or kept reading mine--I got there eventually! :)
datetime is an object, not a double as we old fogies are used to.

Iniciar sesión para comentar.

Categorías

Más información sobre Data Type Conversion en Help Center y File Exchange.

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by