Maneira rápida de linearizar valores usando uma determinada matriz no Matlab

0

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
    
por Cleber Marques 22.03.2017 / 19:23

1 resposta

1

// 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 a contém os valores a serem interpolados em coordenadas espaçadas regularmente que variam de 1 ao comprimento de a . Para conseguir isso, pode-se usar a função interp1 do Matlab, que realiza interpolações lineares com pontos de suporte (primeiro argumento), valores nesses pontos de apoio (segundo argumento) e coordenadas de interpolação solicitadas (terceiro argumento). No entanto, conforme a solicitação do OP para fazer a interpolação com uma chamada de função específica curta, essa função f permite interpolar o vetor a em uma coordenada específica (ou vetor de coordenadas), desde que elas permaneçam no intervalo [1,length(a)] .

    
por 14.04.2017 / 13:53