MATLAB Answers


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?!





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.


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.

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

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.

Answer by Matt J
on 24 Mar 2014

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

You could then use FNZEROS to find their zero crossings.


Join the 15-year community celebration.

Play games and win prizes!

Learn more
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

MATLAB Academy

New to MATLAB?

Learn MATLAB today!