Maneira rápida de linearizar valores usando determinado array no Matlab

Maneira rápida de linearizar valores usando determinado array no Matlab

Estou procurando uma maneira rápida de linearizar um valor entre valores no Matlab.

Exemplo:

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

Responder1

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

faz o que você quer.

O vetor acontém os valores a serem interpolados em coordenadas regularmente espaçadas que variam de 1 ao comprimento de a. Para conseguir isso, pode-se usar a função Matlab interp1, que realiza interpolações lineares dados pontos de suporte (primeiro argumento), valores nesses pontos de suporte (segundo argumento) e coordenadas de interpolação solicitadas (terceiro argumento). Porém, conforme solicitação do OP para fazer a interpolação com uma curta chamada de função específica, esta função fpermite interpolar o vetor aem uma coordenada específica (ou vetor de coordenadas) desde que se mantenham dentro do intervalo [1,length(a)].

informação relacionada