Интерполяция для соответствия размеру набора данных

#python #matlab #math #statistics #numerical-methods

#python #matlab #математика #Статистика #численные методы

Вопрос:

Если у меня есть два набора данных с разными размерами, например:

 x1 = [0,2,5,10,12,20,15,14] #length = 8
y1 = [0,0.3,0.6,1.1,1.3,2.1,1.6,1.5] #length = 8

x2 = [0,2,4,5,10,12,13,20,18,15,14] #length = 11
y2 = [0.3,0.4,0.5,0.7,1.1,1.3,1.4,2.2,1.6,1.9,1.8] #length = 11
  

Как я могу получить данные x1, y1, соответствующие размеру данных x2, y2? Таким образом, они оба получают длину 11.

Я ознакомился scipy.interpolate и с другими его функциями. Но я не получаю правильные цифры, или я использую неправильные функции. Если кто-то знает правильную функцию или другой метод решения этой проблемы, то это было бы здорово.

Таким образом, конечные длины x1, y1 будут равны 11.

Ответ №1:

Я бы использовал interp1

https://uk.mathworks.com/help/matlab/ref/interp1.html

x1i = interp1(1:8, x1, linspace(1,8,11), ‘сплайн’);

y1i = interp1(1:8, y1, linspace(1,8,11), ‘сплайн’);

Комментарии:

1. Отлично, я видел это в matlab, но не знал, как заставить его работать, чтобы получить оба x1, y1. Теперь я понимаю. Спасибо!

2. У меня есть вопрос, существует ли метод этой точной функции MATLAB на других языках, python np.interp() не имеет такого же результата, как scipy.interp1d и .