【问题标题】:Vector interpolation returns same value矢量插值返回相同的值
【发布时间】:2019-03-08 16:17:52
【问题描述】:

我正在尝试使用实验数据qL_nw 的 Y 轴坐标插入一对模拟点 qmuqy。所以这个想法是锁定 Y 值并在我的模拟数据中找到 X 对应项。虽然,我收到错误消息说我的值中有太多重复项,但我通过使用[qmu, qy] = unique(qmu,'stable'); 进行了安排,所以它可以工作。问题是我使用哪种插值方法或者我为整个向量得到相同的值或者我得到 NaN 和最后的一些重复值都没有关系。到目前为止,我的代码是:

[qmu, qy] = unique(qmu,'stable');    %Excluding duplicate numbers
iq5_2 = interp1(qy/h,qmu/max(qmu),qL_nw,'linear');

所有变量都是向量。

到目前为止,linear 返回所有 NaN、pchip 重复值和 nearest 部分 NaN 和重复值的结尾。我在这段代码中找不到错误,有人可以帮我解决吗?


简单来说:

我有一对向量 XsYs 以及第三个向量 Ye,我想根据 YsYe 找到一个插值的 X 向量。尽管无论插值方法如何,结果都没有意义,或者它全部为 Nan 或沿向量具有相同的值,但使用以下代码:

Xs = [1 2 3 4];
Ys = [0.5 0.8 1.3 1.8];
Ye = [0 0.5 1 2];
[Xs, Ys] = unique(Xs,'stable');
Xinterpolated = interp1(Ys,Xs,Ye,'linear');

所有这些的目的是比较两个来源(Xs,YsXe,Ye),以便找到标准偏差和 rmse。

【问题讨论】:

  • 请发布一个重现问题的最小示例(即定义qmuqy 等)。否则任何人都很难猜出问题所在
  • 删除重复项是不够的,您尝试插入的函数必须是有效的标量函数(x 的每个值都有一个 y 值)。交换数据中的 x 和 y 通常会导致一个函数并非如此。如果函数是严格单调的,则只能交换 x 和 y(如在您的示例中,unique 不是必需的,并且完全将 Ys 更改为无意义)。

标签: matlab vector interpolation


【解决方案1】:

您试图在 Xs,Ys 输入范围之外进行推断。试试这个:

xinterpol = interp1(Ys,Xs,Ye,'linear','extrap');

【讨论】:

    【解决方案2】:

    我意识到我的向量没有排序。我将排序功能应用于Xs and Yx 对,它运行良好。没有必要使用unique 删除重复项。谢谢大家的回复。对于那些将来可能有同样问题的人,排序代码是:

    [Ys, aux] = sort(Ys);
    Xs = Xs(aux);
    

    【讨论】:

      猜你喜欢
      • 2020-02-11
      • 2012-09-12
      • 1970-01-01
      • 2015-03-17
      • 2021-11-30
      • 1970-01-01
      • 2012-03-13
      • 1970-01-01
      • 2023-03-22
      相关资源
      最近更新 更多