タイムスタンプ ベクトル (秒単位) と測定された値のベクトルの 2 つのコンポーネントでそれぞれ記述された一連の時系列があります。時間ベクトルは不均一です (つまり、不規則な間隔でサンプリングされます)。
値の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 分は単なる例です)。