Manera rápida de linealizar valores usando una matriz dada en Matlab

Manera rápida de linealizar valores usando una matriz dada en Matlab

Estoy buscando una forma rápida de linealizar un valor entre valores en Matlab.

Ejemplo:

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

Respuesta1

// 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)

hace lo que quieres.

El vector acontiene los valores que se interpolarán en coordenadas espaciadas regularmente que van desde 1 hasta la longitud de a. Para lograr eso, se puede usar la función Matlab interp1, que realiza interpolaciones lineales dados los puntos de soporte (primer argumento), los valores en estos puntos de soporte (segundo argumento) y las coordenadas de interpolación solicitadas (tercer argumento). Sin embargo, según la solicitud del OP de realizar la interpolación con una breve llamada a función específica, esta función fpermite interpolar el vector aen una coordenada específica (o vector de coordenadas) siempre que se mantengan dentro del rango [1,length(a)].

información relacionada