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 |
Siehe auch
id-259442