Я пытаюсь вывести функцию для расчета корреляции движущегося/катящегося для двух векторов, и скорость имеет высокий приоритет, так как мне нужно применить эту функцию в функции массива. У меня есть (что слишком медленно):
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
. Какие-либо предложения?
ones(1,21)
? Поскольку я не очень хорошо с этим знаком: у вас есть формула для движущейся корреляции? - person knedlsepp   schedule 20.02.2015MovCorr
выдает правильные значения. Это слишком медленно. Он производит 21 наблюдение, перемещая корреляцию между двумя векторами, Data1 и Data2. - person Mace   schedule 20.02.2015Data1(.,2)
) - person knedlsepp   schedule 20.02.2015