Standardfunktionen in Ihrer neuen Funktion angeben
Zusammenfassung
Dieses Tutorial zeigt Ihnen, wie Sie sich beim Erstellen einer benutzerdefinierten Anpassungsfunktion auf eine Standardfunktion beziehen.
Origin-Version mind. erforderlich: 8.0 SR6
Was Sie lernen werden
Dieses Tutorial zeigt Ihnen, wie Sie:
- eine stückweise Anpassungsfunktion definieren.
- auf Standardfunktionen in Ihrer neuen Funktion zugreifen.
- Parameter automatisch initialisieren.
Schritte
Daten
Fdangen Sie an, indem Sie die Datei \Samples\Curve Fitting\Asymmetric Gaussian.dat in eine neue Arbeitsmappe importieren.
Markieren Sie Spalte B und erstellen Sie ein Diagramm. Der Peak in den Daten ist leicht nach rechts geneigt. Wie wird so eine Kurve angepasst? Eine Idee besteht darin, die Kurve in zwei Teile zu unterteilen. Damit würde diese Kurve aus zwei Gaussian-Funktionen bestehen. Diese zwei Gauss-Kurven teilen die gleiche Basislinie und das gleiche Peakzentrum, besitzen aber unterschiedliche Peakbreiten und Amplituden.
Funktion definieren
Drücken Sie F9, um den Fit-Funktionsorganizer zu öffnen und eine Funktion zu definieren, wie unten zu sehen:
|
|
Funktionsname: |
AsymmetricGauss |
Funktionstyp: |
Benutzerdefiniert |
Unabhängige Variable: |
x |
Abhängige Variable: |
y |
Parameternamen: |
y0, xc, w1, w2, A1, A2 |
Funktionsform: |
Origin C |
Funktion: |
y = x<xc? nlf_Gauss(x, y0, xc, w1, A1) : nlf_Gauss(x, y0, xc, w2, A2); |
Hinweis:
Für die Versionen vor Origin 8.1 sollte der Funktionskörper folgendermaßen definiert werden:
y = x<xc? nlfxGauss(x, y0, xc, w1, A1) : nlfxGauss(x, y0, xc, w2, A2);
x; y0; xc; w1; w2; A1; A2;
Die Parameter werden am Ende aufgelistet, um zu vermeiden, dass der Fehler "parameter not used inside the function body" (Parameter werden in dem Funktionskörper nicht verwendet) auftritt, obwohl Sie diese Parameter bereits verwenden. Dies ist erfoderlich, um die Funktion erfolgreich zu kompilieren.
|
Um Standardfunktionen erneut zu verwenden, wird beim Aufrufen von nlf_FuncName folgende Syntax verwendet:
- nlf_FuncName( independent variable, parameter list ... )
wobei FuncName der Name der Anpassungsfunktion ist. Die alte Schreibweise nlfxFuncName wird ebenfalls unterstützt.
Die Parameterliste folgt der Parameterreihenefolge in der Funktionsdefinitionsdatei für die Standardfunktionen (die FDF-Datei. Sie können die FDF-Datei mit Notepad öffnen. Die Dateien befinden sich im Verzeichnis \\Origin EXE Folder\FitFunc\). Beachten Sie, dass der Funktionsname, den wir verwenden, der DLL-Schnittstellenname ist. Der tatsächliche Name ist im Abschnitt [General Information] der FDF-Datei zu sehen. Sehen Sie sich das Element Function Source an. Der Wert ist fgroup.FuncName. Dementsprechend verwenden wir FuncName verwenden. In den meisten Fällen ist dieser Funktionsname konsistent mit dem Funktionsnamen, der im Dialogfeld NLFit angezeigt wird. Für einige wenige Funktionen wie Voigt unterscheiden sich diese Namen.
Für die Parameterinitialisierung dieser schiefen Gaussian-Funktion können wir einfach den Initialisierungscode der standardmäßigen Gauss-Funktion kopieren und einige kleine Modifikationen vornehmen:
xc = peak_pos(x_y_curve, &w1, &y0, &A1);
w2 = w1;
A2 = A1;
Der endgültige Funktionskörper sollte wie unten aussehen:
Sobald die Kompilierung erfolgreich war, speichern Sie die Funktion und passen Sie die Kurve an. Die Anpassungsergebnisse sollten folgendermaßen aussehen:
|