How to use find here?
1 次查看(过去 30 天)
显示 更早的评论
Hi, I have the points of a curve. After I plot it, I want to find the points that the curve is on zero. I tried this code:
on1 = find(d_gsr == 0)
but matlab gave me this answer:
on1 =
Empty matrix: 1-by-0
Would anyone help me to do this?
0 个评论
采纳的回答
Star Strider
2017-7-9
If you want to find the zero-crossings, this little utility function will return the indices of the approximate zero-crossings of your data:
zci = @(v) find(v(:).*circshift(v(:), [-1 0]) <= 0); % Returns Approximate Zero-Crossing Indices Of Argument Vector
Use it as:
zero_idx = zci(Your_Dependent_Data_Vector);
then to find the approximate values of your independent variable at those indices:
x_approx = Your_Independent_Data_Vector(zero_idx);
There might be a ‘false’ zero-crossing at the end of the ‘zero_idx’ vector. This is due to the wrap-around done by the circshift function. That index can be discarded.
更多回答(2 个)
KSSV
2017-7-9
You define a small value and find the abs values less then or equal to this value. This is the approach to seek the values from flottants.
theps=0.0001 ;
on1 = find(abs(d_gsr) <= theeps);
Image Analyst
2017-7-9
Attach your data. Chances are there are no elements that have a pure zero as a value. I'm guessing that what you want is where your data points cross the y axis but there are actually no elements at that x location. For example if you have (x,y) = (4, 10), and the next element at (5, -3), a line connecting them will cross the y=0 line at some x value. And I'm guessing that you want the x value. But there is no element of your x array that has that value. So you'll need to find it using functions like fzero(), roots(), etc.
4 个评论
Image Analyst
2017-7-9
Yes, that's one way. Or use interp1 on both x and y to get a bunch of points in between and then use the method KSSV showed you. This is a discrete approximation, which may well be close enough, rather than a theoretical/analytical answer like fzero() fill give, but for that you need to assume some model, like the "line" between points is a straight line or cubic spline, etc.
I didn't even go to the website because if you can't open the website and get the data from it, then I probably won't be able to either.
另请参阅
类别
在 Help Center 和 File Exchange 中查找有关 Spline Postprocessing 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!