<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />Ich habe einen Datensatz bestehend aus zwei Spalten, X und Y, der aus einer Messung (zyklische Voltammetrie mit PAR-Potentiostat) resultiert. Leider ist der Abstand von X nicht gleich (variiert zwischen 0,0005 und 0,0015) und die Software des Instruments kann dies nicht beheben. Ich möchte die Daten erneut abtasten oder interpolieren, um einen gleichen Abstand von beispielsweise 0,001 in X zu erhalten. Gibt es eine schnelle Möglichkeit, dies zu tun?
Die Antwort auf Ihre Frage hängt davon ab, wie unregelmäßig Ihre x-Werte sind und was genau Sie unter „interpolieren“ verstehen.
Das folgende Skript ist also definitiv keine Empfehlung, sondern lediglich ein Beispiel dafür, was möglich ist. Wenn Sie kein Skript benötigen, sollten Sie ähnliche Schritte manuell ausführen können.
Die wichtige Frage ist jedoch wahrscheinlich, wofür Sie die endgültigen Werte verwenden werden.
NamesDefaultToHere ( 1 ) ;
// (0) Mit einer bestimmten Funktion einige gleichmäßig verteilte Daten erstellen
H = Funktion ( { X } , { Standardmäßig lokal } , 0,5 + 0,4 * Sünde ( 2 * Pi () * X ) ) ;
N = 100 ; // Anzahl der (gleichabständigen) x-Werte in [0,1]
xVals = Index ( 0 , 1 , 1 / ( N - 1 ) ) `; // x-Werte als Spaltenvektor
yVals = H ( xVals ) + J ( N , 1 , Zufällig normal ( 0 , 0,1 ) ) ; // y-Werte als Spaltenvektor
// (1) Dezimiere zufällig drei Viertel der Daten, um ungleichmäßige x-Werte zu simulieren (aber immer noch im ursprünglichen Raster)
del = RandomIndex ( N , Runden ( 3 * N / 4 , 0 )) ;
xVals [ del ] = [] ;
yVals [ del ] = [] ;
dt = NeueTabelle ( „Ungerade x“ ,
Neue Spalte ( "X" , Numerisch , Kontinuierlich , Werte ( xVals )) ,
Neue Spalte ( „y“ , Numerisch , Kontinuierlich , Werte ( yVals ))
) ;
// (2) Passen Sie einen Kernel glatter an und speichern Sie die Vorhersageformel
biv = dt << Bivariat ( Y ( : j ) , X ( : X ) ) ;
biv << Kernelglätter ( 1 , 1 , 0,48261 , 0 , { Vorhersageformel speichern }) ;
// (3) Holen Sie sich die Vorhersageformel
pForm = Spalte ( dt , „Löß-Prädiktor für y“ ) << getProperty ( "Formel" ) ;
// (4) Erstellen Sie eine neue Tabelle, um x-Werte mit gleichem Abstand zu speichern
CMD = Ausdruck (
dt2 = NeueTabelle ( „Gerade x“ ,
Neue Spalte ( "X" , Numerisch , Kontinuierlich ) ,
Neue Spalte ( „Vorhergesagt y“ , Numerisch , Kontinuierlich , Formel ( Noch offen ))
)
) ;
SubstituteInto ( CMD , Ausdruck ( Noch offen ) , EvalExpr ( pForm )) ;
CMD ;
// (5) Zerlege die simulierten Messdaten in zwei Vektoren
xVals = Spalte ( dt , "X" ) << GetAsMatrix ;
yVals = Spalte ( dt , „y“ ) << GetAsMatrix ;
// (6) Finden Sie das kleinste x-Inkrement in den Daten
xDel = Mindest ( xVals [ 2 :: NRow ( xVals )] - xVals [ 1 :: ( NRow ( xVals ) - 1 )]) ;
// (7) Füllen Sie die Tabelle mit den interpolierten Daten in einem gleichen Abstand von beispielsweise 3*xDel
xVals2 = Index ( 0 , 1 , 3 * xDel ) `;
Spalte ( dt2 , "X" ) << SetValues ( xVals2 ) ;
// (8) Schauen Sie sich das Ergebnis an
dt2 << Graph Builder (
Größe ( 534 , 454 ) ,
Systemsteuerung anzeigen ( 0 ) ,
Variablen ( X ( : X ) , Y ( : Voraussichtlich y ) ) ,
Elemente ( Punkte ( X , Y , Legende ( 5 ) ) )
) ;