Быстрый способ линеаризации значений с использованием заданного массива в Matlab

282
Cleber Marques

Я ищу быстрый способ линеаризации значения между значениями в 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 
0

1 ответ на вопрос

2
Sander
// 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)].

Похожие вопросы