我有一堆时间序列,每个时间序列由两个组件描述,一个时间戳向量(以秒为单位)和一个测量值向量。时间向量是不均匀的(即以不规则的间隔采样)
我正在尝试计算每个 1 分钟间隔值的平均值/标准差(取 X 分钟间隔,计算其平均值,取下一个间隔,...)。
我当前的实现使用循环。这是我到目前为止的一个示例:
t = (100:999)' + rand(900,1); %' non-uniform time
x = 5*rand(900,1) + 10; % x(i) is the value at time t(i)
interval = 1; % 1-min interval
tt = ( floor(t(1)):interval*60:ceil(t(end)) )'; %' stopping points of each interval
N = length(tt)-1;
mu = zeros(N,1);
sd = zeros(N,1);
for i=1:N
indices = ( tt(i) <= t & t < tt(i+1) ); % find t between tt(i) and tt(i+1)
mu(i) = mean( x(indices) );
sd(i) = std( x(indices) );
end
我想知道是否有更快的矢量化解决方案。这很重要,因为我有大量时间序列要处理的时间比上面显示的样本要长得多。
欢迎任何帮助。
谢谢大家的反馈。
我更正了t
生成方式总是单调递增(排序),这不是一个真正的问题..
另外,我可能没有清楚地说明这一点,但我的意图是在几分钟内找到任何间隔长度的解决方案(1 分钟只是一个例子)