How to find the x-intercept of a plot in Matlab

北城以北 提交于 2019-12-12 03:11:31

问题


I know there must be a really simple answer to this question, but I just can't seem to find it. (Guess I'm probably Googling the wrong terms.)

I am plotting some data in Matlab using the plot(x, data) function.

I want to find the x-intercept(s) of the line, i.e. the point(s) where y = 0.

In some cases, it may be that the data vector doesn't actually contain values equal to zero, so it's not just a matter of finding the indexes of the elements in data which are equal to zero, and then finding the corresponding elements in the x vector.

Like I said, it's a really simple problem and I'd think there's already some in-built function in Matlab...

Thank you for your help.


回答1:


If you want to find X-intercept as interpolate between 2 closest points around X axes you can use INTERP1 function:

x0 = interp1(y,x,0);

It will work if x and y are monotonically increasing/decreasing.




回答2:


x=-1.999:0.001:1.999;
y=(x-1).*(x+1); 
plot(x,y) 
hold on
plot(x,zeros(length(x),1),'--r') 
find(abs(y)<1e-3)

So the last part will guarantee that even there is not exact y-intercept, you will still get a close value. The result of this code are the indices that satisfy the condition.



来源:https://stackoverflow.com/questions/9982833/how-to-find-the-x-intercept-of-a-plot-in-matlab

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!