Discover MakerZone

MATLAB and Simulink resources for Arduino, LEGO, and Raspberry Pi

Learn more

Discover what MATLAB® can do for your career.

Opportunities for recent engineering grads.

Apply Today

Spline function to detect zero crossing

Asked by Melitta on 21 Mar 2014
Latest activity Edited by Star Strider on 25 Mar 2014

Hi All,

I was hoping someone might be able to help me, I am not very good with Matlab so I apologise if this is a stupid question.

I have a series of data that changes over time from being negative to positive. I would like to detect the point at which the data crosses zero. I believe the best way to do this is using a spline curve but I am not sure how to write the routine. Can anyone help me please?!

Thanks

Mel

0 Comments

Melitta

Products

No products are associated with this question.

2 Answers

Answer by Star Strider on 21 Mar 2014

Not a spline, but my answer to Fast zero-crossings with interpolation seems to work reasonably well. I can probably modify it to work with your data, but I have to know what your data are.

6 Comments

Star Strider on 24 Mar 2014

I thought the data were going to be a relatively continuous (if noisy) line. It’s instead a scattergram. It’s probably possible to fit a function to it if you want, but if you simply want to know the values of X (Column 1) are for Y (Column 3) less than zero, that’s easy:

xylz = V((V(:,3)<0),1);     % X-values for Y < 0
yylz = V((V(:,3)<0),3);     % Y-values for Y < 0

Using the find function is also an option.

Melitta on 25 Mar 2014

What does V represent in the above function? Sadly this is as clean and continuous as physiological data get!

Thank you for your help

Star Strider on 25 Mar 2014

I labeled your data as matrix V after eliminating all the ‘DIV/0!’ entries, and the last couple lines that didn’t make sense to me. I should have explained that.

I have a robust background in physiology and physiological measurement from both basic science and clinical perspectives, so I did my best to make sense of your data. Unfortunately, I couldn’t. I didn’t see any obvious relationship.

I assume VO2 is oxygen consumption, and Hb is haemoglobin, but I’m not sure what HHb and HHb.VO2 are. If HHb.VO2 is (HHb x VO2), I strongly suggest you not regress it against VO2, since it’s correlated with VO2 by the way you have defined it. The results will be meaningless.

Star Strider
Answer by Matt J on 24 Mar 2014

The Curve Fitting Toolbox gives lots of different functions for fitting splines to your data

http://www.mathworks.com/help/curvefit/index.html#splines

You could then use FNZEROS to find their zero crossings.

0 Comments

Matt J

Contact us