首页 > 解决方案 > 给定 y 值的 X 值

问题描述

我有一个非常简单的问题,但我找不到我的错误。我有两个信号,一个相同的 x 轴和 y 轴上的两个信号值。我需要在黑线上找到绿色信号的 y 值,所以蓝色信号的 y 值是 50.05。它应该在6-7之间。我认为我应该首先获得相同的 x 值(4.676)。然后得到绿色信号的 y 值,其中 x 为 4.676。所以我需要先得到 4.676,但我不能在给定的 y 值上得到这个 x 值。我试过了,但它总是空矩阵。

xvalue = interp1(x_bluesignal,y_bluesignal, 50.05)

idx = find(x_bluesignal == 50.05);
Xidx = x_bluesignal(idx);

任何想法?谢谢!

在此处输入图像描述

标签: matlabsignalsaxis

解决方案


正如@obchardon 在评论中指出的那样,您想要在 x 值上进行插值,而不是在 y 值上进行插值。作为一个简单的示例,请考虑以下内容:

%Plot two original lines
x = linspace(0,20,101);
y1 = 5*x+2;
y2 = 3*x+5;
plot(x, y1, 'b', x, y2 ,'g'); hold on

%Plot intersection line at desired y_interest value
y_interest = 50.05;
xvalue = interp1(y1, x, y_interest);
plot([xvalue, xvalue], [0, 100], 'k--')

x_interest = interp1(x, y2, xvalue);

这将产生以下图:

在此处输入图像描述

在 x 上插值以找到正确的 x 值后,您可以将该值提供给绿色曲线的 y 值上的下一个插值。在上面的示例中,这将输出33.8300.


推荐阅读