Я пытаюсь написать функцию 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, поэтому я просто использовал эту встроенную функцию в качестве ссылки на то, как должен выглядеть график, и моя функция просто совершенно неверна. Я надеюсь, что это имеет смысл. Любая помощь будет отличной.