Как мне добавить какую-либо точку на кусочный fplot? - PullRequest
0 голосов
/ 10 ноября 2018

Мне было поручено найти естественную кубическую сплайн-функцию S для интерполяции набора данных, которые мне дали. Мне дали 11 точек данных. По сути, это означает, что я должен поместить кубическую функцию между этими точками, чтобы у меня было 10 кубических функций, которые объединяются в нечто, похожее на 1 функцию.

Я уже закончил это. Я новичок в использовании MatLab, поэтому я не уверен, как я должен ставить точки на этом графике.

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

syms S(t)
S(t) = piecewise(x(1)<t<x(2), (longExpression1), x(2)<t<x(3), (longExpression2), ... x(10)<t<x(11), (longExpression10));

Затем я строю функцию с помощью fplot () и определяю домен, для которого я хочу увидеть график:

fplot(S(t), [0,100]);

Мне нужно построить 13 точек на этом графике. Первые 11 точек, которые мне нужно построить, - это точки, которые лежат на концах каждого из этих сегментов. Последние 2 точки, которые мне нужны, - это не конечные точки, а точки где-то посередине двух разных кусочных сегментов.

11 точек данных имеют следующие значения x и y:

x = [0 10 20 30 40 50 60 70 80 90 100];
y = [75.995 91.972 105.711 123.203 131.669 150.697 179.323 203.212 226.505 249.633 281.422];

Мой сюжет выглядит так: enter image description here

1 Ответ

0 голосов
/ 10 ноября 2018

Вы можете попробовать следующее:

fplot(S(t), [0,100]);
hold on         % This will prevent the new plot from erasing the result of fplot
plot(x,y,'or'); % 'ok' is a format identifier, the points will be plot as red(r) circles(o)
plot([x1,X2],[S(x1),S(x2)],'or'); %Plot the two extra points
...