В MATLAB найдите пересечения нуля в пределах порога, учитывая вектор данных

Я написал функцию в MATLAB для подсчета количества пересечений нуля по заданному вектору данных сигнала. Если я нахожу пересечение нуля, я также проверяю, больше ли абсолютная разница между двумя задействованными векторными индексами, чем пороговое значение - это попытка уменьшить влияние шума сигнала.

    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);

Я использовал вектор из функции пересечения нуля, чтобы проверить это: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];

Кажется, работает нормально, но есть ли более эффективный способ достижения того же результата? Например. на вышеуказанной веб-странице они просто используют следующую строку для расчета пересечения нуля:

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

Есть ли способ включить проверку порога в нечто такое же эффективное?

Ответы на вопрос(1)

Ваш ответ на вопрос