Schnelle Möglichkeit zum Linearisieren von Werten mithilfe eines gegebenen Arrays in Matlab

Schnelle Möglichkeit zum Linearisieren von Werten mithilfe eines gegebenen Arrays in Matlab

Ich suche nach einer schnellen Möglichkeit, einen Wert zwischen Werten in Matlab zu linearisieren.

Beispiel:

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

Antwort1

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

macht was du willst.

Der Vektor aenthält die zu interpolierenden Werte auf regelmäßig verteilten Koordinaten im Bereich von 1 bis zur Länge von a. Dazu kann man die Matlab-Funktion verwenden interp1, die eine lineare Interpolation anhand von Stützpunkten (erstes Argument), Werten auf diesen Stützpunkten (zweites Argument) und gewünschten Interpolationskoordinaten (drittes Argument) durchführt. Gemäß der Anforderung des OP, die Interpolation mit einem kurzen spezifischen Funktionsaufruf durchzuführen, fermöglicht diese Funktion jedoch die Interpolation des Vektors aan einer bestimmten Koordinate (oder einem Vektor von Koordinaten), solange diese innerhalb des Bereichs bleiben [1,length(a)].

verwandte Informationen