Spline function to detect zero crossing

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

Answers (2)

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

Thank you for your reply.
My data are in two columns. On the y axis is a ratio and on the x axis is a continuous variable (in this instance % total power output). I could send you a file if that would help?
That would help. Attach the file to your original post. I’ll check back here from time to time. (I would prefer a ‘.txt’ file rather than a spreadsheet page.)
Thank you so much! I have attached the txt file. I am trying to plot column C on the y axis as a function of column A on the x-axis and run a routine that allows me to mathematically determine at what value on the x-axis the data cross 0.
I hope that makes vague sense....
Thank you again.
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.
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
Star Strider on 25 Mar 2014
Edited: 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.

Sign in to comment.

Matt J
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.

Categories

Asked:

on 21 Mar 2014

Edited:

on 25 Mar 2014

Community Treasure Hunt

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

Start Hunting!