Использование splines () создает проблему, если координаты x переходят от увеличения к уменьшению - PullRequest
0 голосов
/ 11 октября 2019

У меня есть два столбца с данными, x и y. Теперь я хочу соединить эти точки данных в порядке их появления в столбцах. Скажем, у меня есть x=[1 2 3 4 3 2] и y=[3 4 2 1 3 3]. Теперь, если я использую сплайн для создания гладкой кривой, он сортирует столбцы в возрастающем порядке. Я хотел бы, чтобы он просто взял точки данных, то есть сначала x(1),y(1) и соединил их с x(2), y(2) и т. Д.

Возможно ли это?

1 Ответ

2 голосов
/ 11 октября 2019

spline генерирует функцию от реалов к реалам. Это означает, что более общая кривая не может быть выражена как y = f(x), но нам нужно параметризовать ее как (x(t), y(t)):

x=[1 2 3 4 3 2];
y=[3 4 2 1 3 3];
plot(x,y,'o-');
% cannot be represented as function y=f(x) 
% because x=2 and 3 have two different y values
% -> parametrize x and y:
t = 1:numel(x);
tt = linspace(min(t), max(t), 1000);;
tx = spline(t,x,tt);
ty = spline(t,y,tt);
hold on
plot(tx,ty,'-');

enter image description here

...