【お知らせ】この部分は英語原文のみでの提供となります。何卒ご了承ください。
2.1.17.7.3 ocmath_mat_replace_blanks
Contents
Description
Fill missing values in a matrix based on neighboring values.
Syntax
int ocmath_mat_replace_blanks( double * pMat, int nRows, int nCols, int iLeft = -1, int iTop = -1, int iRight = -1, int iBottom = -1, int iOptions = MRB_CUSTOM_VALUE, double dValue = 0 )
Parameters
- pMat
- [modify] The input/output matrix. When the function returns, the missing cells in the matrix will be filled;
- nRows
- [input] The number of rows of the matrix (nRows > 1);
- nCols
- [input] The number of columns of the matrix (nCols > 1);
- iLeft
- [input] The searching distance towards left (iLeft >= -1), -1 means search to the left-most matrix element.
- iTop
- [input] The searching distance towards top (iTop >= -1), -1 means search to the top-most matrix element.
- iRight
- [input] The searching distance towards right (iRight >= -1), -1 means search to the right-most matrix element.
- iBottom
- [input] The searching distance towards bottom (iBottom >= -1), -1 means search to the bottom-most matrix element.
- iOptions
- [input] Specifies the replacing flags. This parameter can be a combination of the following values:
- MRB_CUSTOM_VALUE: Default: replace all missing cells by the custom value specified by dValue;
- MRB_MEAN: Replace the missing value by the mean of non-NANUM values;
- MRB_MIN: Replace the missing value by the minimum of non-NANUM values;
- MRB_MAX: Replace the missing value by the maximum of non-NANUM values;
- MRB_NEAREST_NEIGHBOR: Specify the searchin scope. If not set, the function searches all non-NANUM values within the rectangle specified by iLeft, iTop, iRight and iBottom. If set, the function only search nearest non-NANUM values in the same column or the same row confined by iLeft, iTop, iRight and iBottom.
- MRB_IGNORE_LEFT_BORDER: Ignore the cell whose left cells are all missing values;
- MRB_IGNORE_TOP_BORDER: Ignore the cell whose top cells are all missing values;
- MRB_IGNORE_RIGHT_BORDER:Ignore the cell whose right cells are all missing values;
- MRB_IGNORE_BOTTOM_BORDER:Ignore the cell whose bottom cells are all missing values;
- dValue
- [input] The custom value. This parameter is only valid when setting iOptions to MRB_CUSTOM_VALUE;
Return
If the function succeeds, return the number of missing values in the matrix.
If there is any invalid input, return -1.
Examples
EX1
#include <wks2mat.h> //Before running, make sure a matrixlayer exists and activated in current project void ocmath_mat_replace_blanks_ex1() { MatrixLayer ml = Project.ActiveLayer(); MatrixObject mo = ml.MatrixObjects(0); int nRows = mo.GetNumRows(); int nCols = mo.GetNumCols(); Matrix& mat = mo.GetDataObject(); int iRet = ocmath_mat_replace_blanks(mat, nRows, nCols, -1, 0, 1, 0, MRB_MIN | MRB_NEAREST_NEIGHBOR | MRB_IGNORE_LEFT_BORDER | MRB_IGNORE_RIGHT_BORDER); MatrixPage mp = Project.Pages(); mp.Refresh(true); printf("%d blanks found.\n", iRet); } /* In above code, if the input matrix is: 5 - - - - 5 - - - - 5 4 - - - - 3 - - - - 2 - 6 - - - 4 - - - 4 - - - 7 - - 7 - - 3 - - - - - 4 - 2 - 1 - - - The output matrix: 5 5 5 5 5 5 5 5 5 5 5 4 4 4 4 3 3 3 3 3 2 2 - 6 6 6 4 4 4 4 4 4 - - - 7 7 7 7 7 3 3 - - - - - 4 4 2 2 1 - - - */
Remark
See Also
Header to Include
wks2mat.h