我知道这个问题肯定有一个非常简单的答案,但我似乎找不到。 (猜猜我可能在搜索错误的术语。)
我正在使用plot(x,data)函数在Matlab中绘制一些数据。
我想找到直线的x截距,即y = 0的点。
在某些情况下,可能是data向量实际上不包含等于0的值,所以这不仅仅是在data中查找等于的元素索引的问题。零,然后在x向量中找到相应的元素。
就像我说的那样,这是一个非常简单的问题,我认为Matlab中已经有一些内置函数...
谢谢您的帮助。
如果要找到X截距作为在X轴周围2个最近点之间的插值,则可以使用INTERP1函数:
x0 = interp1(y,x,0);
如果x
和y
单调增加/减少,它将起作用。
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截距,您仍然可以获得接近的值。该代码的结果是满足条件的索引。
您可以对数据进行线性拟合(一阶多项式),然后从拟合线的斜率和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