MATLAB Answers

0

command or code for detecting zero crossing points in a signal

Asked by pradeep kumar manelli on 29 Dec 2015
Latest activity Answered by David Young
on 29 Dec 2015
please suggest any command or code for detecting zero crossing points in a signal

  0 Comments

Sign in to comment.

1 Answer

Answer by David Young
on 29 Dec 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 Comments

Sign in to comment.