Для двух вещей, имеющих разные знаки, это означает, что их произведение отрицательно:
P(k) = ((D(k)<=0)&&(D(k+1)>=0))||((D(k)>=0)&&(D(k+1))<0);
совпадает с:
P(k) = ( D(k) * D(k+1) ) <= 0;
Это просто векторизовать, просто преобразовав операции в поэлементные операции:
P = ( D(1:end-1) .* D(2:end) ) <= 0;
Исходная конструкция может быть векторизована таким же образом, при этом &
и |
являются поэлементными аналогами &&
и ||
:
P = ((D(1:end-1)<=0)&(D(2:end)>=0))|((D(1:end-1)>=0)&(D(2:end))<0);
Однако более короткое выражение требует меньше промежуточных матриц и меньше операций, и поэтому будет быстрее.