向量插值 returns 相同值

Vector interpolation returns same value

我试图通过使用实验数据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 returns 所有 NaN,pchip 重复值和 nearest 部分 NaN 和重复值的结尾。我找不到此代码中的错误,有人可以帮助我吗?


简单来说:

我有一对向量 XsYs 以及第三个向量 Ye 我想找到一个基于 [=21= 的内插 X 向量] 和 Ye。尽管无论插值方法如何,结果都没有意义,或者它全部为 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。

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

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

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

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