Detecting change in sign of values of a column

1 view (last 30 days)
If I a data file with 3 columns the first being the x cordinates second being the y cordinates and the third being the z.
Data(:,2); %produces all the y values which are +-0.1 either side of y=0
So If I have
Data(:,2)=[0.03;0.05;0.08;-0.01;-0.05;-0.06;0.02;0.03; -0.05;-0.01]
%^sign change %^sign change ^^sign change
%so must pass %so must pass
%y=0 %y=0
How would I run a loop that goes through Data(:,2) and finds where the y values have changed sign and stores that position. So in my example it would detect the first change in sign from 0.08 to -0.01 (4th position of -0.01) the second change in sign at-0.06 and 0.02 (7th position of 0.02) the third sign change at 0.03 -0.05 (9th position of -0.05) which shows they have passed through y=0 and store those positions as a new column
I hope that makes sense and any help would be appreciated .

Accepted Answer

Adam on 12 Nov 2019
Edited: Adam on 12 Nov 2019
NewC = find( diff( sign( Data(:,2) ) ) ) + 1;

More Answers (0)

Community Treasure Hunt

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

Start Hunting!

Translated by