【问题标题】:How to find the x-intercept of a plot in Matlab如何在 Matlab 中找到绘图的 x 截距
【发布时间】:2012-04-16 11:47:36
【问题描述】:

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

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

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

在某些情况下,可能 data 向量实际上并不包含等于 0 的值,因此这不仅仅是查找 data 等于 0,然后在 x 向量中找到对应的元素。

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

感谢您的帮助。

【问题讨论】:

  • 如果没有点 y 正好等于 0,您是否想要一个最接近 y==0 的点,或者您想要在最接近的点之间进行插值,或者可能通过整个线系列?
  • @yuk 我的数据总是与 x 截距相交。因此,即使向量本身没有 0 作为其值之一,我也想得到线(由 Matlab 绘制)与 x 轴相交的点。

标签: matlab graph plot intercept


【解决方案1】:

您可以对数据进行线性拟合(一阶多项式),然后,根据拟合线的斜率和 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

【讨论】:

    【解决方案2】:

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

    x0 = interp1(y,x,0);
    

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

    【讨论】:

      【解决方案3】:
      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 截距,你仍然会得到一个接近的值。此代码的结果是满足条件的索引。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2020-09-04
        • 2014-01-21
        • 1970-01-01
        • 2015-09-09
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多