2.2.3.9.23 matrixbase::Floor

Description

Round each cell of this matrix to the nearest integer less than the current cell value (toward minus infinity).

Syntax

int Floor( matrixbase & mbFloor )

Parameters

mbFloor
[output] matrix containing the results

Return

Returns 0 on success and a non-zero error code on failure.

Note that the missing value(NANUM) won't be changed by this function.

Examples

EX1

void matrixbase_Floor_ex1()
{
    int rc; 
    matrix<double> mat1 = {
        { 0.0,   0.1,  1.0,  1.1,  1.5,  1.9},
        { 999,  -0.1, -1.0, -1.1, -1.5, -1.9}
    };
    mat1[1][0]=NANUM;  // set row=2,col=1 to NANUM
  
	rc=mat1.Floor(mat1); 
    if(rc!=0) printf("Error: Floor failed. Error Code=%d\n",rc);
    else{
    	printf("The matrix is:\n");
        for(int ii=0; ii< mat1.GetNumRows(); ii++){
			for(int jj=0; jj< mat1.GetNumCols(); jj++) 
				printf("%g  ", mat1[ii][jj]);
			printf("\r\n");
        }
    }
}

EX2

#define MAKEMAT(X) MatrixLayer MatLy##X;MatLy##X.Create();Matrix Mat##X(MatLy##X)
// Apply various integer-making functions to a matrix
void matrixbase_Floor_ex2()
{
    int rc; 
    matrix<double> mat1 = {
        { 0.0,   0.1,  1.0,  1.1,  1.5,  1.9},
        { 999,  -0.1, -1.0, -1.1, -1.5, -1.9}
    };
    mat1[1][0]=NANUM;  // set row=2,col=1 to NANUM
 
    PageBase pgbase;
 
    MAKEMAT(1);
    pgbase = Project.Pages(); // Get the active page
    pgbase.Rename("Original");
    Mat1 = mat1;
    
	// Change cells to floor values  
    MAKEMAT(2);
    pgbase = Project.Pages(); 
    pgbase.Rename("Floor");
    rc=Mat1.Floor(Mat2); 
    if(rc!=0) printf("Error: Floor failed. Error Code=%d\n",rc);
    else      printf("%s matrix is created.\n",Mat2.GetName());

    // Change cells to fix values
    MAKEMAT(3);
    pgbase = Project.Pages();
    pgbase.Rename("Fix");
    rc=Mat1.Fix(Mat3); 
    if(rc!=0) printf("Error: Fix failed. Error Code=%d\n",rc);
    else      printf("%s matrix is created.\n",Mat3.GetName());
	
    // Change cells to round values
    MAKEMAT(4);
    pgbase = Project.Pages(); 
    pgbase.Rename("Round");
    rc=Mat1.Round(Mat4); 
    if(rc!=0) printf("Error: Round failed. Error Code=%d\n",rc);
    else      printf("%s matrix is created.\n",Mat4.GetName());
 
    // Change cells to ceil values
    MAKEMAT(5);
    pgbase = Project.Pages();
    pgbase.Rename("Ceil");
    rc=Mat1.Ceil(Mat5); 
    if(rc!=0) printf("Error: Ceil failed. Error Code=%d\n",rc);
    else      printf("%s matrix is created.\n",Mat5.GetName());
}

Remark

Round each cell of this matrix to the nearest integer less than the current cell value (toward minus infinity). Notice the differences of Round, Fix, Floor and Ceil.

See Also

matrixbase::Fix, matrixbase::Round, matrixbase::Ceil

Header to Include

origin.h