Векторная интерполяция возвращает то же значение - PullRequest
0 голосов
/ 08 марта 2019

Я пытаюсь интерполировать пару смоделированных точек qmu и qy, используя координаты оси Y экспериментальных данных qL_nw.Таким образом, идея состоит в том, чтобы заблокировать значения 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, и я хочу найти интерполированный вектор X, основанный на Ys и 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,Ys и Xe,Ye), поэтому я могу найти стандартное отклонение и rmse.

Ответы [ 2 ]

0 голосов
/ 09 марта 2019

Я понял, что мои векторы не отсортированы.Я применил функцию сортировки к паре Xs and Yx, и она работала нормально.Не было необходимости удалять дубликаты с unique.Спасибо за все ответы.Для тех, кто в будущем может столкнуться с той же проблемой, код сортировки был:

[Ys, aux] = sort(Ys);
Xs = Xs(aux);
0 голосов
/ 08 марта 2019

Вы пытаетесь экстраполировать вне диапазона ввода Xs, Ys.Попробуйте это:

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

enter image description here

...