Schnelle Methode zum Linearisieren von Werten mithilfe eines gegebenen Arrays in Matlab

344
Cleber Marques

Ich suche einen schnellen Weg, um 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 
0

1 Antwort auf die Frage

2
Sander
// 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 in regelmäßigen Abständen zwischen 1 und der Länge von a. Um dies zu erreichen, kann man die Matlab-Funktion verwenden interp1, die bei Stützpunkten (erstes Argument), Werten an diesen Stützpunkten (zweites Argument) und angeforderten Interpolationskoordinaten (drittes Argument) eine lineare Interpolation durchführt. Gemäß der Aufforderung des OP, die Interpolation mit einem kurzen spezifischen Funktionsaufruf durchzuführen, ermöglicht diese Funktion jedoch fdie Interpolation des Vektors aan einer bestimmten Koordinate (oder einem Koordinatenvektor), solange sich diese innerhalb des Bereichs befinden [1,length(a)].