## Spline function to detect zero crossing

### Melitta (view profile)

on 21 Mar 2014
Latest activity Edited by Star Strider

### Star Strider (view profile)

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

## Products

No products are associated with this question.

### Star Strider (view profile)

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.

Star Strider

### Star Strider (view profile)

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

### Melitta (view profile)

on 25 Mar 2014

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

Star Strider

### Star Strider (view profile)

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.

### Matt J (view profile)

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.

#### Join the 15-year community celebration.

Play games and win prizes!

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