inden Sie in MATLAB Nulldurchgänge innerhalb eines Schwellenwerts, wenn ein Datenvektor gegeben is

Ich habe eine Funktion in MATLAB geschrieben, um die Anzahl der Nulldurchgänge bei einem Vektor von Signaldaten zu zählen. Wenn ich einen Nulldurchgang finde, überprüfe ich auch, ob die absolute Differenz zwischen den beiden beteiligten Vektorindizes größer als ein Schwellenwert ist - dies soll versuchen, den Einfluss des Signalrauschens zu verringern.

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

Ich habe den Vektor aus der Nulldurchgangsfunktion hier verwendet, um ihn zu testen:http: //hips.seas.harvard.edu/content/count-zero-crossings-matla

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

s scheint gut zu funktionieren, aber gibt es eine effizientere Möglichkeit, das gleiche Ergebnis zu erzielen? Z.B. Auf der obigen Webseite verwenden sie einfach die folgende Zeile, um Nulldurchgänge zu berechnen:

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

Gibt es eine Möglichkeit, den Schwellenwert-Check in etwas ähnlich Effizientes zu integrieren?

Antworten auf die Frage(2)

Ihre Antwort auf die Frage