Я пытаюсь составить график для моей программы интерполяции (в основном она берет тестовую функцию и создает строки, используя interpolation method
)
clear all;
close all;
clc;
x1= [-1 0.75 -0.5 -0.25 0 0.25 0.5 0.75 1];
x2=-1:1001:1;
y1=1./(1+25.*x1.^2);
y2=1./(1+25.*x2.^2);
figure(777)
title('Figure 777')
for loop=1:1:6
subplot(6,2,loop);
plot(x2,y2,'linewidth',2);
hold on
plot(x1,y1,'r.','markersize',25);
hold on
end
%%%(A)
[p1,s1,u1] = polyfit(x1,y1,4);
Y1=polyval(p1, x2, s1, u1);
subplot (6,2,1)
plot(x2,Y1,'b','linewidth',6);
%%%(B)
[p2, s2, u2] = polyfit(x1,y1,8);
Y2 = polyval(p2, x2, s2, u2);
subplot(6,2,1)
plot(x2,Y2, 'b', 'linewidth', 6);
%%%(C)
Y3 = interp1(x1, y1, x2, 'linear');
subplot(6,3,1)
plot(x2, Y3, 'b', 'linewidth', 6);
%%%(D)
Y4 = interp1(x1,y1,x2, 'nearest');
subplot(6,4,1)
plot(x2, Y4, 'b', 'linewidth', 6);
%%%(E)
Y5 = interp1(x1,y1,x2, 'spline');
subplot(6,5,1)
plot(x2, Y5, 'b', 'linewidth', 6);
%%%(F)%%%(This method does not exist for Matlab R2017a)
Y6 = interp1(x1,y1,x2, 'makima');
subplot(6,6,1)
plot(x2, Y6, 'b', 'linewidth', 6);
Однако ни одна из строк не появляется при запуске программы. Только точки. Кроме того, я получаю эти ошибки:
Предупреждение: полином плохо кондиционирован. Добавьте точки с различными значениями X или
уменьшить степень полинома.
В polyfit (line 73)
В HwSixTwo (line 27)
Ошибка при использовании griddedInterpolant
Векторы сетки должны содержать уникальные точки.
Ошибка в interp1 (строка 149)
F = griddedInterpolant(X,V,method);
Ошибка в HwSixTwo (строка 33)
Y3 = interp1(x1, y1, x2, 'linear');