En MATLAB, encuentre cruces por cero dentro de un umbral, dado un vector de datos

He escrito una función en MATLAB para contar el número de cruces por cero dado un vector de datos de señal. Si encuentro un cruce por cero, también verifico si la diferencia absoluta entre los dos índices vectoriales involucrados es mayor que un valor umbral; esto es para tratar de reducir la influencia del ruido de la señal.

    zc = [];
    thresh = 2;
    for i = 1:length(v)-1
        if ( (v(i)>0 && v(i+1)<0) || (v(i)<0 && v(i+1)>0) ) && abs(v(i)-v(i+1)) >= thresh
            zc = [zc; i+1];
        end
    end
    zcCount = length(zc);

Usé el vector de la función de cruces por cero aquí para probarlo:http://hips.seas.harvard.edu/content/count-zero-crossings-matlab

    A = [-0.49840598306643,
         1.04975509964655,
        -1.67055867973620,
        -2.01437026154355,
         0.98661592496732,
        -0.06048256273708,
         1.19294080740269,
         2.68558025885591,
         0.85373360483580,
         1.00554850567375];

Parece funcionar bien, pero ¿hay una manera más eficiente de lograr el mismo resultado? P.ej. en la página web anterior, simplemente usan la siguiente línea para calcular los cruces por cero:

    z=find(diff(v>0)~=0)+1;

¿Hay alguna manera de incorporar la verificación de umbral en algo igualmente eficiente?