如何在Matlab中查找绘图的x截距

问题描述 投票:1回答:3

我知道这个问题肯定有一个非常简单的答案,但我似乎找不到。 (猜猜我可能在搜索错误的术语。)

我正在使用plot(x,data)函数在Matlab中绘制一些数据。

我想找到直线的x截距,即y = 0的点。

在某些情况下,可能是data向量实际上不包含等于0的值,所以这不仅仅是在data中查找等于的元素索引的问题。零,然后在x向量中找到相应的元素。

就像我说的那样,这是一个非常简单的问题,我认为Matlab中已经有一些内置函数...

谢谢您的帮助。

matlab graph plot intercept
3个回答
3
投票

如果要找到X截距作为在X轴周围2个最近点之间的插值,则可以使用INTERP1函数:

x0 = interp1(y,x,0);

如果xy单调增加/减少,它将起作用。


0
投票
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)

因此,最后一部分将保证即使没有精确的y截距,您仍然可以获得接近的值。该代码的结果是满足条件的索引。


0
投票

您可以对数据进行线性拟合(一阶多项式),然后从拟合线的斜率和Y截距中可以找到X截距。这是一个示例:

x1 = 1:10;
y1 = x1 + randn(1,10);
P = polyfit(x1,y1,1);
xint = -P(2)/P(1);

如果您想知道什么是斜率和y_int,则为:

Slope = P(1);  % if needed 
yint = P(2);   % if need
© www.soinside.com 2019 - 2024. All rights reserved.