Get a subset of this matrix specified by 0 based column and row indices or indices vector. -1 means to last col/row
BOOL GetSubMatrix( matrixbase & mbTarget, int c1 = 0, int c2 = -1, int r1 = 0, int r2 = -1 ) BOOL GetSubMatrix( matrixbase & mbTarget, const vector<uint> vnIndices, BOOL bRow = TRUE)
Returns TRUE on successful exit and FALSE on failure.
EX1
// Extract a submatrix void matrixbase_GetSubMatrix_ex1() { matrix<double> mat1 = { {2,2,2,2,2}, {2,1,1,1,2}, {2,1,1,1,2}, {2,2,2,2,2} }; MatrixPage MatPg1; MatPg1.Create("Origin"); MatrixLayer MatLy1 = MatPg1.Layers(0); Matrix Mat1(MatLy1); printf(" Original matrix %s has been created.\n",Mat1.GetName()); Mat1 = mat1; MatrixPage MatPg2; MatPg2.Create("Origin"); MatrixLayer MatLy2 = MatPg2.Layers(0); Matrix Mat2(MatLy2); // Demonstration of GetSubMatrix to extract the central 2x3 area int rc=Mat1.GetSubMatrix(Mat2,1,3,1,2); if(!rc) printf(" Error: GetSubMatrix on %s failed.\n",Mat1.GetName()); else printf(" Extracted submatrix from (2,2) to (3,4) is %s.\n",Mat2.GetName()); MatrixPage MatPg3; MatPg3.Create("Origin"); MatrixLayer MatLy3 = MatPg3.Layers(0); Matrix Mat3(MatLy3); // Demonstration of GetSubMatrix to extract the central 2x4 area rc=Mat1.GetSubMatrix(Mat3,1,-1,1,2); if(!rc) printf(" Error: GetSubMatrix on %s failed.\n",Mat1.GetName()); else printf(" Extracted submatrix from (2,2) to (3,4) is %s.\n",Mat3.GetName()); }
EX2
// Extract submatrix from certain rows of a source matrix void test_matrixbase_GetSubMatrix1() { int ii,jj; int nRows = 5; int nCols = 5; vector<uint> vnIndices = {0, 2, 3, 4}; matrix matSrc= { {1,2,3,4,5}, {6,7,8,9,10}, {11,12,13,14,15}, {16,17,18,19,20}, {21,22,23,24,25} }; matrix matTarRow; // Demonstration of GetSubMatrix to extract certain rows from matrix bool bRowCheck = matSrc.GetSubMatrix(matTarRow, vnIndices, true); // Print out the submatrix. printf("matTarRow = \n"); if(bRowCheck) { for(ii=0; ii<matTarRow.GetNumRows() && bRowCheck; ii++) { for(jj=0; jj<matTarRow.GetNumCols() && bRowCheck; jj++) { printf("%f ",matTarRow[ii][jj]); } printf("\n"); } } }
origin.h