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