Minimum Origin Version Required: Origin8 SR0
This example will show how to get the XY coordinate of the minimum/maximum Z value from a matrix.
void get_xy_coordinate_min_max_z() { // get the matrix object MatrixLayer ml = Project.ActiveLayer(); if(!ml) { out_str("Please activate a matrix."); return; } MatrixObject mo = ml.MatrixObjects(0); if(!mo) { out_str("Please make sure that there is a valid matrix object"); return; } // get number of column and row int nCols = mo.GetNumCols(); int nRows = mo.GetNumRows(); // get matrix data and find the indices of min/max Matrix& mat = mo.GetDataObject(); uint iStart = 0; // start data index uint iEnd = nCols*nRows-1; // end data index uint iMinIndex, iMaxIndex; // get indices of min/max z ocmath_d_minmax(mat, iStart, iEnd, &iMinIndex, &iMaxIndex); // convert the indices to column/row indices int iMaxRow = iMaxIndex/nCols; int iMaxCol = iMaxIndex%nCols; int iMinRow = iMinIndex/nCols; int iMinCol = iMinIndex%nCols; // get min and max z value double dMin = mat[iMinRow][iMinCol]; double dMax = mat[iMaxRow][iMaxCol]; // get the xy coordinate for min/max z value double dXMin = mat.GetXValue(iMinCol); double dYMin = mat.GetYValue(iMinRow); double dXMax = mat.GetXValue(iMaxCol); double dYMax = mat.GetYValue(iMaxRow); // print the result printf("The minimum Z = %f\nThe maximum Z = %f\n", dMin, dMax); printf("The XY coordinate of minimum Z is (%f, %f)\n", dXMin, dYMin); printf("The XY coordinate of maximum Z is (%f, %f)\n", dXMax, dYMax); }