Если я вас правильно понял, вы хотите взаимно коррелировать блок из 250 выборок, один за другим.Адаптируясь с вашей попытки, попробуйте
for i=1:250:40000
r1 = max(abs(xcorr(S1(i:i+249), shat1(i:i+249),'coeff')));
end
В качестве примечания, знаете ли вы что-нибудь о максимальной задержке между вашими сигналами?Если вы можете с уверенностью предположить, что временной сдвиг между вашими сигналами меньше 250 (что предполагает идея разделения его на интервалы), вы можете сэкономить время вычислений, изменив исходный код с помощью maxlags
, параметра для xcorr:
maxlags=250; %# or some other reasonable value, maybe even 100? 50?
r1 = max(abs(xcorr(S1, shat1,maxlags, 'coeff')));
r2 = max(abs(xcorr(S1, shat2,maxlags, 'coeff')));
...
Я не проверял, как быстро это будет, но я думаю, что вы могли бы избежать этой петли вместе с этим ...