MATLAB Answers

0

command or code for detecting zero crossing points in a signal

pradeep kumar manelli さんによって質問されました 2015 年 12 月 29 日
最新アクティビティ David Young
さんによって 回答されました 2015 年 12 月 29 日
please suggest any command or code for detecting zero crossing points in a signal

  0 件のコメント

サインイン to comment.

タグ

1 件の回答

回答者: David Young
2015 年 12 月 29 日

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 件のコメント

サインイン to comment.



Translated by