OriginLab Corporation - Wissenschaftliche Visualisierungs- und Datenanalysesoftware - 2D-Diagramme, 3D-Diagramme, Konturdiagramme, Statistische Diagramme, Datenanalyse, Statistiken, Kurvenanpassung, Signalverarbeitung und Peakanalyse

Erstellen einer benutzerdefinierten Funktion zum Setzen von Spaltenwerten

Inhalt

Einführung

Dieses Thema beschreibt, wie eine Origin C-Funktion geschrieben wird, so dass sie im Menü F(x) des Dialogfelds Werte setzen aufgeführt wird.

Allgemeine Informationen zum Hinzufügen Ihrer eigenen OC-Funktionen zu Origin finden Sie im Thema: Aufrufen von OC-Funktionen von LabTalk aus.

Damit auf OC-Funktionen vom Dialogfeld Werte setzen aus zugegriffen werden kann, müssen folgende zusätzliche Bedingungen erfüllt werden:

Sobald die Funktion kompiliert ist, wird sie im Auswahlmenü F(x) des Dialogfelds Werte setzen verfügbar.

Unterstützen von Numerischen Typen & Zeichenkettentypen mit Daten in Spalten

Zeichenkette

Das Folgende ist ein Beispiel für eine Zeichenkettenfunktion:

string AddSomethingToStr(string str)
{
  str += " test";
  return str;
}

Sobald sie kompiliert ist, könnte diese Funktion dann im Dialogfeld Werte setzen wie unten verwendet werden:

Col(B) = AddSomethingToStr(Col(A))$; 

Numerisch

Das Folgende ist ein Beispiel einer Funktion, die eine ganze Zahl zurückgibt:

int CopyNumeric(int nn)
{
        return nn;
}

Auf die Funktion kann dann vom Dialogfeld Werte setzen aus zugegriffen werden, um numerische Daten aus einer Spalte in eine andere zu kopieren:

Col(B) = CopyNumeric(Col(A));

Steuern des Zugriffs auf OC-Funktionen von LabTalk aus

Fügen Sie eine der folgenden #pragma-Anweisungen in Ihre OC-Quelldatei ein, um den Zugriff auf Ihre OC-Funktionen von LabTalk aus zu deaktivieren, erlauben oder zu begrenzen.

Da das Standardverhalten von Origin darin besteht, das Aufrufen von OC-Funktionen von LabTalk aus zu erlauben, wird #pragma labtalk(1) in Ihrem OC-Code nicht wirklich gebraucht. Beachten Sie, dass #pragma labtalk(...) Einfluss auf alle Funktionen in dieser Datei hat bis zum nächsten #pragma labtalk(...). Daher können Sie, wenn Sie keine C-Funktionen in das Menü F(x) eingeben möchten, #pragma labtalk(0) vor der Funktion verwenden. Und Sie können #pragma labtalk(1) wieder eingeben, um die Eingabe von Funktionen in das Menü F(x) wieder aufzunehmen. Durch Verwenden dieser Methode können Sie die Funktionsnamen im Menü F(X) steuern und verwalten.

Festlegen der Kategorie für die Funktion im Menü F(x)

Damit Ihre OC-Funktionen im Menü F(x) unter einer geeigneten Kategorie erscheinen, sollten Sie eine Pragma-Aussage wie unten hinzufügen:

Die Funktion(en) wird/werden dann im Menü F(x) von Werte setzen unter dem Menü F(x) wie unten angezeigt, wobei das Beispiel hier eine Funktion darstellt, die eine Zeichenkette akzeptiert und zurückgibt:

Date and Time : FunctionName(str)$

Wenn Sie eine Kategorie für Ihre OC-Funktion festlegen, wird die Funktion unter der Kategorie Benutzerdefiniert gezeigt.

Tutorial

Im Folgenden wird eine Vorgehensweise zum Hinzufügen einer benutzerdefinierten Funktion im Menü F(x) des Dialogfelds Werte setzen dargestellt. Außerdem befinden sich in internal.c im Unterordner \OriginC\System\ Ihres Programmverzeichnisses von Origin die entsprechenden Beispielcodes.

Schritte:

  1. [CodeBuilder öffnen]: Wählen Sie im Menü Ansicht: Code Builder, um den Code Builder zu öffnen.
  2. [Dateiname eingeben]: Wählen Sie im Menü des Code Builders Datei: Neu. Das Dialogfeld Neue Datei wird geöffnet. Wählen Sie C File als Dateityp im Dialogfeld Neue Datei und geben Sie test im Feld des Dateinamens ein (Die Erweiterung ".c" wird automatisch hinzugefügt.) Beachten Sie, dass der Standardspeicherort der <Anwenderdateiordner>\OriginC\ ist. Klicken Sie auf OK. Das Dialogfeld ist geschlossen, und das Fenster "test.c" wird im Bearbeitungsfeld angezeigt.
  3. [Code eingeben]: Geben Sie den folgenden Origin C-Code unten in diesem Bearbeitungsfeld ein:
#pragma labtalk&#40;1,Math&#41;
double add2num&#40;double a, double b&#41;
&#123;
          return a + b;
&#125;

Hinweis: Die Zeile "pragma" vor der Funktionsdefinition ist dazu da, die Funktion in der Kategorie Math im Menü F(x) zu setzen.

  1. [Erstellen]: Wählen Sie im Menü des Code Builders Hilfsmittel: Erstellen, um den Code zu kompilieren. Stellen Sie sicher, dass keine Fehler auftreten. Wenn der Code erfolgreich kompiliert wird, schließen Sie den Code Builder, um zum Hauptfenster von Origin zurückzukehren. Wenn ein Fehler auftritt, korrigieren Sie ihn und kompilieren Sie erneut.
Hinweis: Weitere Informationen um Kompilieren finden Sie unter: "Vier Methoden zum Erstellen des Code Builder-Arbeitsbereichs" and "Laden und Kompilieren der Origin C-Funktion".
  1. [Öffnen des Dialogfelds Werte setzen]: Gehen Sie zurück zum Origin-Arbeitsbereich. Erstellen Sie eine neue Arbeitsmappe. Wählen Sie Spalte: Neue Spalte hinzufügen im Origin-Menü, um dem Arbeitsblatt in dieser Arbeitsmappe eine dritte Spalte hinzuzufügen. Füllen Sie die ersten beiden Spalten mit beliebigen Zahlen. Markieren Sie die zweite Spalte durch Klicken auf ihren Spaltenheader und wählen Sie Spalte: Spaltenwerte errechnen, um das Dialogfeld Werte setzen zu öffnen.
  2. [Die neue Funktion aus dem Menü F(x) eingeben]: Klicken Sie im Dialogfeld auf das Menü "F(x)". Unter der Kategorie Math können Sie den Eintrag add2num(d1, d2) sehen. Wählen Sie die Funktion, indem Sie auf sie klicken. Der Text "add2num(, )" wird in das Textfeld für die Spaltenformel eingefügt. Bearbeiten und modifizieren Sie den eingefügten Text:
    add2num&#40;col&#40;1&#41;,col&#40;2&#41;&#41;
    
  3. [Werte setzen ausführen]: Klicken Sie auf OK, und die Summe der ersten und zweiten Spalte werden in jeder Zeile in der zweiten Spalte als Ergebnis angezeigt.

Hinweis: Auch diese Funktion "add2num" besitzt zwei (double) Skalierungsargumente und gibt einen Skalierungswert zurück, wenn Sie diese Funktion im Dialogfeld Werte setzen mit zwei Spalten (z.B. Vektoren) als ihre Argumente ausführen, die Ergebnisse werden in die Zielspalte geschrieben, da das Dialogfeld Werte setzen die Formel automatisch auf jedes Element (durch i implizit indiziert) anwendet.