can someone please in detail explain to me what this simple line of coding is doing in order to calculate zero crossing. I thought you needed the second derivative of the function to do this. Thank you
zci = @(v) find(v(:).*circshift(v(:), [-1 0]) <= 0);

 채택된 답변

John D'Errico
John D'Errico 2016년 11월 1일

0 개 추천

Why would you possibly need the second derivative to locate a zero crossing?
All this does is look for consecutive elements of a vector that have different signs.
If you really want to see what it does, read the help for circshift. My re-writing existing help will be a waste of time. Given that, what property do two numbers have if they have different signs? Answer: the product will ALWAYS be negative. So all that line does is look for consecutive elements with opposite signs. (Zero will do too.)

추가 답변 (0개)

카테고리

도움말 센터File Exchange에서 Linear Algebra에 대해 자세히 알아보기

질문:

2016년 11월 1일

답변:

2016년 11월 1일

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by