mardi 19 janvier 2016

Is there any way to process this loop faster?

I have the following code and it is taking a very long time to go through it... I dont think its an infinite loop but it is as follows:

Y = zeros(1069,30658);
D1 = LagOp({0,1,1,1},'Lags',[0,1,2,1]);
for n = 2:30658;
    for j = 2:1063
        if filter(D1,Ret((D1.Degree + j),n),'Initial',Ret(2:D1.Degree,n)) < 0;
            Y(j+1,n) = -1*Ret(j+1,n);
        else
            Y(j+1,n)=Ret(j+1,n) ;
        end
    end
end

Basically I want to flip the sign of the current element in the matrix if the previous 3 elements before it add up to being less than 0. Otherwise to leave it alone. Could it be the ... else statement causing the trouble here ?

Thanks,

Aucun commentaire:

Enregistrer un commentaire