我知道这个问题必须有一个非常简单的答案,但我似乎找不到它。(我猜我可能在谷歌上搜索错误的术语。)
我正在使用plot(x, data)函数在 Matlab 中绘制一些数据。
我想找到直线的 x 截距,即 y = 0 的点。
在某些情况下,可能数据向量实际上并不包含等于 0 的值,所以这不仅仅是找到数据中等于 0 的元素的索引,然后在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