Question on using interpolate function
4 次查看(过去 30 天)
显示 更早的评论
This is a follow-up to my previous post here. I want to find the x value at which data has 5.0 (first occurence).
I tried using the find function suggested in the comments.
l = load('var.mat'); % file attached
l = l.unnamed;
x = l(:,1);
data = l(:,2);
tsinterp = getinterpmethod(x)
xmatch = x(find(data == 5.0,1))
The answer that I obtain is 1.71. However, the first occurrence of 5.0 is at 0.20 (x value). I'm not sure what's going wrong.
Any suggestions on how to proceed will be really helpful
0 个评论
采纳的回答
Sindar
2020-1-29
Check your data again. "data" is slightly less than 5 until x=0.485, and the first point exactly equal to 5 is x=1.71. You could add a tolerance like so:
tol = 1e-4;
xmatch = x(find(data >= 5.0-tol,1,'first'))
2 个评论
Sindar
2020-1-29
"1" tells the number of occurences you want, in case there are multiple. 'first' is the direction; it isn't required, since it is the default, but I like to include it out of habit
更多回答(1 个)
Walter Roberson
2020-1-29
See ismembertol()
The data that is stored corresponding to time 0.20, is not bit-for-bit identical to the representation for double precision 5.0. If you were to subtract 5 from the content at that location you would get something not exactly 0.
0 个评论
另请参阅
类别
在 Help Center 和 File Exchange 中查找有关 Resizing and Reshaping Matrices 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!