Set a subset of this matrix specified by 0 based column and row indices. The source and target matrices can have different types and different dimensions but the target matrix is never resized even if the source matrix is larger than the target.
BOOL SetSubMatrix( matrixbase & mbSource, int c1 = 0, int r1 = 0 )
Returns TRUE on successful exit or FALSE on failure.
EX1
void matrixbase_SetSubMatrix_ex1() { int c1, r1; BOOL rc; matrix<double> matD = { {0, 0, 0, 0}, {0, 0, 0, 0}, {0, 0, 0, 0} }; // Destination matrix<double> to be applied the method matrix<int> matS = { {1, 2, 3}, {5, 6, 7}, {9, 10, 11} }; // Source matrix<int> to apply the method // Result matrix by this sample program will be: // {0, 0, 0, 0} // {0, 0, 1, 2} // {0, 0, 5, 6} // Prepare the source matrix MatrixPage MatPg1; MatPg1.Create("Origin"); MatrixLayer MatLy1 = MatPg1.Layers(0); Matrix Mat1(MatLy1); Mat1 = matS; printf(" Source matrix is %s. Size=%dx%d.\n", Mat1.GetName(),Mat1.GetNumRows(),Mat1.GetNumCols()); // Prepare a copy of the destination matrix MatrixPage MatPg2; MatPg2.Create("Origin"); MatrixLayer MatLy2 = MatPg2.Layers(0); Matrix Mat2(MatLy2); Mat2 = matD; printf(" Original copy of the destination matrix is %s. Size=%dx%d.\n", Mat2.GetName(),Mat2.GetNumRows(),Mat2.GetNumCols()); // Prepare the result destination matrix MatrixPage MatPg3; MatPg3.Create("Origin"); MatrixLayer MatLy3 = MatPg3.Layers(0); Matrix Mat3(MatLy3); c1=2; r1=1; rc=matD.SetSubMatrix(matS, c1, r1); Mat3 = matD; printf(" Setting position: Row=%d, Col=%d.\n",r1+1,c1+1); if(!rc) printf(" Error: Shrink failed.\n"); else printf(" Result destination matrix is %s. Size=%dx%d.\n", Mat3.GetName(),Mat3.GetNumRows(),Mat3.GetNumCols()); }
origin.h