Concatenate a matrix to this matrix placing the results in a third matrix.
int Concatenate( int nDim, matrixbase & mSource, matrixbase & mResult )
Returns 0 on success or one of the following error codes on failure.
-1=nDim is not 1 or 2
-2=The source matrices do not have the same number of columns (when concatenating row wise) or rows (when concatenating column wise)
EX1
void matrixbase_Concatenate_ex1() { int rc; matrix mat1 = { {1, 2, 3}, {4, 5, 6} }; matrix mat2 = {{7, 8, 9}}; rc = mat1.Concatenate( 1, mat2, mat1 ); if(rc!=0) printf("Error: Concatenate 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 NEWMAT(X) MatrixPage MatPg##X; MatPg##X.Create("Origin"); \ MatrixLayer MatLy##X = MatPg##X.Layers(0); Matrix Mat##X(MatLy##X); Mat##X = mat##X; // Concatenate a matrix to another matrix void matrixbase_Concatenate_ex2() { int rc; matrix mat1 = { {1, 2, 3}, {4, 5, 6}, {7, 8, 9} }; matrix mat2 = { {0, 0, 0}, {0, 0, 0} }; matrix mat3 = { {0, 0}, {0, 0}, {0, 0} }; // Row-wise concatenation (mat1 and mat2) result: // {1, 2, 3} // {4, 5, 6} // {7, 8, 9} // {0, 0, 0} // {0, 0, 0} // // Column-wise concatenation (mat1 and mat3) result: // {1, 2, 3, 0, 0} // {4, 5, 6, 0, 0} // {7, 8, 9, 0, 0} NEWMAT(1); // source matrix to be concatenated NEWMAT(2); // source matrix to concatenate row-wise NEWMAT(3); // source matrix to concatenate column-wise //output matrix for row-wise concatenation printf("Concatenation of %s to %s Row-wise.\n",Mat2.GetName(),Mat1.GetName()); matrix mat4; rc = mat1.Concatenate( 1, mat2, mat4 ); //concatenate mat2 to mat1 row wise (nDim=1) if(rc!=0) printf("Error: Concatenation(row-wise) failed.rc=%d\n",rc); else { NEWMAT(4); printf(" Result of concatenation row-wise is %s.\n",Mat4.GetName()); } //output matrix for column-wise concatenation printf("Concatenation of %s to %s Column-wise.\n",Mat3.GetName(),Mat1.GetName()); matrix mat5; rc = mat1.Concatenate( 2, mat3, mat5 ); //concatenate mat3 to mat1 column wise (nDim=2), change nDim to 3 to see the result if(rc!=0) printf("Error: Concatenation(column-wise) failed.rc=%d\n",rc); else { NEWMAT(5); printf(" Result of concatenation column-wise is %s.\n",Mat5.GetName()); } //The source matrices do not have the same number of columns or rows. printf("Concatenation of %s to %s Row-wise.\n",Mat3.GetName(),Mat1.GetName()); matrix mat6; rc = mat1.Concatenate( 1, mat3, mat6 ); //concatenate mat3 to mat1 row wise (nDim=1) if(rc!=0) printf("Error: Concatenation(column-wise) failed. \nThe source matrices do not have the same number of columns or rows. rc=%d\n",rc); else { NEWMAT(6); printf(" Result of concatenation column-wise is %s.\n",Mat6.GetName()); } }
Concatenate a matrix to this matrix placing the results in a third matrix. Matrices can be concatenated row wise or column wise. All three matrices must have the same underlying base type or a runtime error will be generated.
origin.h