2 つのベクトルの移動/ローリング相関を計算する関数を導出しようとしていますが、この関数を配列関数に適用する必要があるため、速度が優先されます。私が持っているもの(遅すぎる)はこれです:
Data1 = rand(3000,1);
Data2 = rand(3000,1);
function y = MovCorr(Data1,Data2)
[N,~] = size(Data1);
correlationTS = nan(N, 1);
for t = 20+1:N
correlationTS(t, :) = corr(Data1(t-20:t, 1),Data2(t-20:t,1),'rows','complete');
end
y = correlationTS;
end
for
ローリング ウィンドウ インデックスを生成してから を適用する方法を知っていれば、ループをより効率的に実行できると考えていますaccumarray
。助言がありますか?