【发布时间】:2019-03-08 16:17:52
【问题描述】:
我正在尝试使用实验数据qL_nw 的 Y 轴坐标插入一对模拟点 qmu 和 qy。所以这个想法是锁定 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 和重复值的结尾。我在这段代码中找不到错误,有人可以帮我解决吗?
简单来说:
我有一对向量 Xs 和 Ys 以及第三个向量 Ye,我想根据 Ys 和 Ye 找到一个插值的 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,Ys 和 Xe,Ye),以便找到标准偏差和 rmse。
【问题讨论】:
-
请发布一个重现问题的最小示例(即定义
qmu、qy等)。否则任何人都很难猜出问题所在 -
删除重复项是不够的,您尝试插入的函数必须是有效的标量函数(x 的每个值都有一个 y 值)。交换数据中的 x 和 y 通常会导致一个函数并非如此。如果函数是严格单调的,则只能交换 x 和 y(如在您的示例中,
unique不是必需的,并且完全将Ys更改为无意义)。
标签: matlab vector interpolation