我有一堆时间序列,每个时间序列由两个分量描述,一个时间戳向量(以秒为单位)和一个测量值向量。时间向量是不均匀的(即以非规律间隔取样)MATLAB:一个时间序列的每个1分钟间隔的计算均值
我试图计算每个1分钟间隔值的平均值/ SD(以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分钟只是一个示例)
+1:出于某种原因,我完全忽略了ACCUMARRAY。 – gnovice 2010-02-24 17:21:06
谢谢,这是既简洁又易于阅读 – merv 2010-02-24 22:31:08
我甚至不知道有关准确的。感谢您证明它是多么有用! – Jonas 2010-02-25 01:54:30