移位时间序列从零开始H:M:S:MS(可能在Matlab中)
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了移位时间序列从零开始H:M:S:MS(可能在Matlab中)相关的知识,希望对你有一定的参考价值。
我有一些针对许多科目的心电图数据。对于每个主题,我可以导出具有RR间隔,心率和其他度量的excel文件。问题是我在录制时有一个时间戳(在本例中为11:22:3:00)。我需要将日期与其他主题进行比较,我想在Matlab中自动执行该过程。
例如,我需要灵活地比较条件1中的前3分钟与条件2中的sbj,或条件1和2的分钟4到8,依此类推。要做到这一点,我认为最好的方法是为每个主题移动时间向量,使其从0开始。
有几个问题需要注意:我不能为所有主题创建一个向量。这将是不准确的,因为心脏测量对于每个个体是可变的。
因此,简而言之我需要为每个参与者移动时间向量,使其从0开始,并且与原始参与者完全一样。所以,在这个例子中:
H: M: S: MS RR HR
11:22:03:000 0.809 74.1
11:22:03:092 0.803 74.7
11:22:03:895 0.768 78.1
11:22:04:663 0.732 81.9
11:22:05:395 0.715 83.9
11:22:06:110 0.693 86.5
11:22:06:803 0.705 85.1
11:22:07:508 0.706 84.9
11:22:08:214 0.749 80.1
11:22:08:963 0.762 78.7
11:22:09:725 0.766 78.3
会成为:
00:00:00:0000
00:00:00:092
00:00:00:895
00:00:01:663
等等......
我想在Matlab中做...
附:我正在研究在4个不同变量中提取信息的想法。然后,我可以从第一个单元格中减去每个单元格的值。例如:
11-11 = 0; 22-22=0; 03-03=0; ms: keep the same value
也许这可能有点工作,除非如果我有一个主题开始,比如说,11:55:05:00
谢谢大家的帮助。
Gluce
基本时间戳标准化只是从其余时间减去最小值(或者首先,假设它们是正确排序的)。
使用MATLAB的datetime
对象,这只是减法,它产生一个duration
对象:
ts = ["11:22:03:000", "11:22:03:092", "11:22:03:895", "11:22:04:663"];
% Convert to datetime & normalize
t = datetime(ts, 'InputFormat', 'HH:mm:ss:SSS');
t.Format = 'HH:mm:ss:SSS';
nt = t - t(1);
% Reformat & display
nt.Format = 'hh:mm:ss.SSS';
哪个回报:
>> nt
nt =
1×4 duration array
00:00:00.000 00:00:00.092 00:00:00.895 00:00:01.663
或者,您可以规范化datetime
数组本身:
ts = ["11:22:03:000", "11:22:03:092", "11:22:03:895", "11:22:04:663"];
t = datetime(ts, 'InputFormat', 'HH:mm:ss:SSS');
t.Format = 'HH:mm:ss:SSS';
[h, m, s] = hms(t);
[t.Hour, t.Minute, t.Second] = deal(h - h(1), m - m(1), s - s(1));
返回相同:
>> t
t =
1×4 datetime array
00:00:00:000 00:00:00:092 00:00:00:895 00:00:01:663
以上是关于移位时间序列从零开始H:M:S:MS(可能在Matlab中)的主要内容,如果未能解决你的问题,请参考以下文章
Qt中关于QTime类中QTime(int h, int m, int s=0, int ms = 0)