Натуральная функция сплайна cubi c в MATLAB - PullRequest
0 голосов
/ 23 апреля 2020

Я пытаюсь написать функцию MATLAB, которая интерполирует точки данных в X, чтобы создать естественный кубический сплайн c, аналогичный interp1, но без использования interp1. Функция принимает входные данные вектора x и c (из системы Ac = Y) и вектора X точек данных, которые я хочу интерполировать.

Моя функция почти завершена, я поставил систему в матричной форме , нашел значения y, коэффициенты a, b, c и d, но я не знаю, как оценить значения X, чтобы получить мое оценочное значение Y.

Например, это то, что у меня есть на момент:

%cubic spline interpolation
n = length(x);
N = length(X);
Y = zeros(size(X));
for i = 1:n-1
    for j = 1:N
        while x(i) <= X(j) &&  x(i+1) >= X(j)
            Y(j) = a(i)*(X(j)^3) + b(i)*(X(j)^2) + c(i)*X(j) + d(i);
break
        end
    end
    
end

Мой вопрос: почему это не работает? Я знаю, что interp1 не находит естественный сплайн, но я очень новичок в MATLAB, поэтому я просто использовал эту встроенную функцию в качестве ссылки на то, как должен выглядеть график, и моя функция просто совершенно неверна. Я надеюсь, что это имеет смысл. Любая помощь будет отличной.

...