1

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

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

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

在某些情况下,可能数据向量实际上并不包含等于 0 的值,所以这不仅仅是找到数据中等于 0 的元素的索引,然后在x向量。

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

谢谢您的帮助。

4

3 回答 3

3

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

x0 = interp1(y,x,0);

x如果并且y单调增加/减少,它将起作用。

于 2012-04-02T21:19:57.757 回答
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 截距,你仍然会得到一个接近的值。此代码的结果是满足条件的索引。

于 2012-04-02T20:01:22.143 回答
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
于 2020-05-08T20:32:49.417 回答