command or code for detecting zero crossing points in a signal
3 vues (au cours des 30 derniers jours)
Afficher commentaires plus anciens
please suggest any command or code for detecting zero crossing points in a signal
0 commentaires
Réponses (1)
David Young
le 29 Déc 2015
You can use logical tests to find the indices between which the signal changes sign. Then you need to interpolate if you want to estimate the cross point more accurately. If linear interpolation is sufficient and your samples are equally spaced in time, you can do this:
% test signal
x = [-1 -1 2 2 3 -4 -1 1];
% upward zero-crossings to nearest time step
upcross = find(x(1:end-1) <= 0 & x(2:end) > 0);
% interpolate
upcross = upcross - x(upcross) ./ (x(upcross+1)-x(upcross));
% downward zero-crossings
downcross = find(x(1:end-1) >= 0 & x(2:end) < 0);
downcross = downcross - x(downcross) ./ (x(downcross+1)-x(downcross));
0 commentaires
Voir également
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!