2.1.18.20 ocmath_xyz_examine_data


Description

This function check the xyz scatters and return the proposed method for converting the XYZ to matrix.

Syntax

int ocmath_xyz_examine_data( UINT nSize, double * x, double * y, double * z, double dXPrecision = 1.0e-8, double dYPrecision = 1.0e-8, UINT * pVar = NULL, double * pXmin = NULL, double * pXStep = NULL, double * pXmax = NULL, double * pYmin = NULL, double * pYStep = NULL, double * pYmax = NULL, bool bRemoveDuplicate = false, int nMethod = Remove_With_Mean )

Parameters

nSize
[input] the number of scatters.
x
[modify] the x-coordinates of the scatters.
y
[modify] the y-coordinates of the scatters.
z
[modify] the z-coordinates of the scatters.
dXPrecision
[input] the precision to determine whether two points are duplicated in X dimension.
dYPrecision
[input] the precision to determine whether two points are duplicated in Y dimension.
pVar
[output] the number of points after removing the duplicates.
pXmin
[output] the minimum in x-coordinates when scatters are not randomly distributed.
pXStep
[output] the interval in x-coordinates when scatters are not randomly distributed.
pXmax
[output] the maximum in x-coordinates when scatters are not randomly distributed.
pYmin
[output] the minimum in y-coordinates when scatters are not randomly distributed.
pYStep
[output] the interval in y-coordinates when scatters are not randomly distributed.
pYmax
[output] the maximum in y-coordinates when scatters are not randomly distributed.
bRemoveDuplicate
[input] if true, the function will remove the duplicates, or else the array x, y, z will not change.
nMethod
[input] the method used in removing the duplicates.

Return

Return the proposed method for converting the XYZ to matrix

0: Regular conversion

1: Sparse conversion

2: Random conversion

or other values for ERROR

Examples

EX1

#include <wks2mat.h>
void ocmath_xyz_examine_data_ex1()
{
    int n = 10;
    double a[]={1,1,1,2,2,2,3,3,3,2};
    double b[]={1,2,3,1,2,3,1,2,3,2};
    double c[]={5,3,7,3,6,5,0,4,3,7};
    
    int nRet = ocmath_xyz_examine_data(n, a, b, c, 1.0e-4, 1.0e-4);
    printf("%d\n", nRet);
}

EX2

#include <wks2mat.h>
// Loaded XYZ data from the active Workshheet, and determine how to convert it to a matrix.
void ocmath_xyz_examine_data_ex2(double dPrecision = 1.0e-8)
{
    // The active Worksheet.
    Worksheet wks = Project.ActiveLayer();
    wks.SetSize(-1, 3);    // To contain the results
    
    Dataset dsX(wks, 0), dsY(wks, 1), dsZ(wks, 2);
    
    vector vX(dsX), vY(dsY), vZ(dsZ);
    
    int nSize = vX.GetSize();    
    
    UINT nVar;
    
    double dXmin,dXStep,dXmax,dYmin,dYStep,dYmax;
    
    bool bRemoveDuplicate = false;
    
    int iRet = ocmath_xyz_examine_data(nSize, vX, vY, vZ, dPrecision, dPrecision, &nVar,&dXmin,&dXStep,&dXmax,&dYmin,&dYStep,&dYmax,bRemoveDuplicate);
    
    switch(iRet)
    {
    case 0: // Regular.
        printf("--- %d: regular conversion ---\n", iRet);        
        break;
    case 1: // Sparse.
        printf("--- %d: sparse conversion ---\n", iRet);        
        break;
    case 2: // Random.
        printf("--- %d: random conversion ---\n", iRet);
        break;
    default: // Error.
        printf("--- Error: %d returned ---\n", iRet);
    }
    
    // Output results.
    printf("nVar   = %d\n", nVar  ); 
    printf("dXmin  = %f\n", dXmin ); 
    printf("dXstep = %f\n", dXStep); 
    printf("dXmax  = %f\n", dXmax ); 
    printf("dYmin  = %f\n", dYmin ); 
    printf("dYstep = %f\n", dYStep); 
    printf("dYmax  = %f\n", dYmax ); 
    
}

Remark

Should remove duplicated points before using this function

See Also

ocmath_convert_regular_xyz_to_matrix, ocmath_convert_sparse_xyz_to_matrix

Header to Include

wks2mat.h

Reference