Я ищу быстрый способ линеаризации значения между значениями в Matlab.

Пример:

a = ([10 20 30 40])
index = 1.5 //a float index
func(a,index); //shall return a value between index 1 and 2. In this case would be the value 15.
Ans = 15

1 ответ1

2
// define a function that interpolates a vector 'a' defined on a regular grid
// at interpolated support coordinates 'x'
f = @(a, x) interp1( 1:length(a), a, x);

// test vector (given by OP)
a=[10 20 30 40];
// this vector interpolated at coordinate 1.5 gives 15
// (can be a vector of coordinates)
f(a, 1.5)

делает то, что вы хотите.

Вектор a содержит значения, которые необходимо интерполировать по равномерно расположенным координатам в диапазоне от 1 до длины a . Для этого можно использовать функцию Matlab interp1 , которая выполняет линейную интерполяцию с учетом опорных точек (первый аргумент), значений этих опорных точек (второй аргумент) и запрашиваемых интерполяционных координат (третий аргумент). Однако, согласно запросу OP на выполнение интерполяции с коротким вызовом определенной функции, эта функция f позволяет интерполировать вектор a по определенной координате (или вектору координат), пока они находятся в диапазоне [1,length(a)] .

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .