XYAddDataΒΆ
The XYAddData function adds data to an existing dataset.
-
bool = XYAddData(hData, rvX, rvY)
-
bool = XYAddData(hData, rvX, rvY, bExt)
-
bool = XYAddData(hData, rvX, rvY, bExt, rvMissingValue)
Return Value
bool is TRUE (1), if the function was successful and otherwise FALSE (0).
Parameters
-
hData
hData is the handle of a 1D or 2D dataset.
-
rvX
rvX is a vector with x-coordinates.
-
rvY
rvY is a vector with y-coordinates.
-
bExt
This parameter specifies if the function will access the original data or the filtered data.
Value | Description |
---|---|
-1 | If filtered data is available it will access filtered data, otherwise it will access original data. Default value is -1. |
0 | Access original data. |
1 | Access filtered data. |
-
rvMissingValue
rvMissingValue is a real vector with one or two elements. The values specify the missing value in rvX and rvY. All missing values in rvX and rvY will be removed. If rvMissingValue contains only one value, it will be used to remove missing valued for the x- and y-coordiantes. Default value is 1e10.
Comment
With the help of the XYAddData huge datasets can be handled. The dataset is created by the function TYCreate or XYCreate. Then blocks of data can be added to the dataset. The advantage is that not all data has to be in memory at the same time as a huge block.
The first call XYAddData(hData, rvY)
adds data to a 1D dataset
A 1D dataset should be created with the TYCreate function. A 2D
dataset should be created with the XYCreate function.
All data points equal to rvMissingValue will not be added.
Example
The following example creates a binary file with a 100000 points
(WriteTestFile
). The function Test
reads the data block wise and
adds data to the dataset. To execute the example copy it into an UniPlot
program editor (File=>New) and execute it with the
command UniScript=>Save/Execute.
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");
See also
id-259442