XYAddData

XYAddData fügt einem Datensatz Daten zu.

bool = XYAddData(hData, rvX, rvY)
bool = XYAddData(hData, rvX, rvY, bExt)
bool = XYAddData(hData, rvX, rvY, bExt, rvMissingValue)

Returnwert

bool ist TRUE (1), wenn die Funktion erfolgreich war und sonst FALSE (0).

Parameter

hData

hData ist die Zugriffsnummer eines Datensatzes.

rvX

rvX ist ein Vektor mit den X-Koordinaten.

rvY

rvY ist ein Vektor mit den Y-Koordinaten.

bExt

Der Parameter legt fest, ob die Funktion auf die Originaldaten oder die gefilterten Daten zugreift.

Wert Beschreibung
-1 Falls gefilterte Daten vorhanden sind: Zugriff auf die gefilterten Daten, sonst auf die Originaldaten. Der Defaultwert ist -1.
0 Zugriff auf die Originaldaten.
1 Zugriff auf die gefilterten Daten.
rvMissingValue

rvMissingValue ist ein Vektor mit einem oder zwei Elementen. Mit dem Parameter wird ein ungültige Wert in rvX und rvY festgelegt. Die ungültigen Werte werden beim Speichern im Datensatz aus den Daten entfernt. Falls rvMissingValue nur einen Wert enthält, wird der Wert für die x- und die y-Koordinaten verwendet. Default-Wert ist 1e10.

Kommentar

Mit Hilfe der Funktion XYAddData können sehr große Datensätze erzeugt werden. Der Datensatz wird mit der Funktion TYCreate oder XYCreate erzeugt. Danach werden die Daten blockweise dem Datensatz zugefügt. Beim blockweisen Zufügen müssen nicht alle Datenpunkte als großer Block im Speicher gehalten werden.

Der erste Aufruf XYAddData(hData, rvY) fügt einem 1D-Datensatz Daten zu. Ein 1D-Datensatz sollte mit der Fufnktion TYCreate erzeugt worden sein. Der zweite Aufruf XYAddData(hData, rvX, rvY) fügt einem 2D-Datensatz Daten zu. Ein 2D-Datensatz sollte mit der Funktion XYCreate erzeugt worden sein.

Beispiel

Im folgenden Beispiel erzeugt die Funktion WriteTestFile eine Binärdatei mit 100000 Punkten. Die Funktion Test liest die Daten blockweise ein und fügt sie einem Datensatz zu. Sie können das Beispiel in in einen UniPlot-Programm-Editor kopieren und mit über das Menükommando UniScript=>Speichern/Ausführen ausführen.

def WriteTestFile(ssFileName, nPoints)
{
    ShowWaitCursor(TRUE);
    fp = fopen(ssFileName, "wb");
    x = linspace(0, 100 * PI, nPoints);
    y = sin(x) + rand(1, nPoints) * 0.2;
    fwrite(fp, "float", y)
    fclose(fp);
}
def Test(ssFileName)
{
    hDoc = DocCreate();
    hPage = PageCreate();
    hLayer = LayerCreate();
    DocAddPage(hDoc, hPage);
    PageAddLayer(hPage, hLayer);
    nBlockSize = 10000;
    i = nBlockSize;
    fp = fopen(ssFileName, "rb");
    y = fread(fp, "float", nBlockSize)
    hData = TYCreate("test", y, hDoc);
    LayerAddDataset(hLayer, hData);
    while (1) {
        y = fread(fp, "float", nBlockSize);
        XYAddData(hData, y);
        if (len(y) < nBlockSize) break;
        AppSetStatusBarText(sprintf("Points: %d", i = i + nBlockSize));
    }
    fclose(fp);
    LayerAutoScale(hLayer);
    PageReplot(hPage)
}
WriteTestFile("c:/testfile.dat", 100000);
Test("c:/testfile.dat");

History

Version Beschreibung
5.20.0 Neuer Parameter rvMissingValue.
5.3.0  

id-259442