The article explains the principles and the structure of the matrices used by NMat.
The operations Create, Destroy and Copy are implemented by the following functions:
/* * Description: * Alocates spaces for a NMatrix structure according to the parameters * @rows si @columns. * Parameters: * rows - the number of rows * columns - the number of columns * Returns: * A pointer to the allocated matrix structure. */ NMatrix* NMatrix_Create(integer rows, integer columns); /* * Description: * Free the space hold by a NMatrix structure * Parameters: * matrix - a pointer to the NMatrix structure * Returns: * NULL * Preconditions: * @matrix must not be NULL */ NMatrix* NMatrix_Destroy(NMatrix *matrix); /* * Description: * Creates a hard copy of the matrix @source * Parameters: * source - the matrix who shall be copied * destination - the matrix where the copy * will be stored * Returns: * A pointer to the clone matrix * Preconditions: * @matrix must not be NULL */ NMatrix* NMatrix_Clone(const NMatrix *source);If you want to see how the functions are implemented, click the link below:
Example:
#include<stdio.h> #include"NMatrix.h" void PrintMatrix(NMatrix *mat) { integer i = 0, j = 0; for (i = 0; i < mat->rows; i++) { for (j = 0; j < mat->columns; j++) { printf("%+f ", mat->data[i][j]); } putchar('\n'); } putchar('\n'); } int main(int argc, char *argv[]) { NMatrix* mat = NULL; NMatrix* matCopy = NULL; /*Creating a 2x2 NMatrix structure*/ mat = NMatrix_Create(2, 2); /*Assigning values to the structure*/ mat->data[0][0] = 3.3; mat->data[0][1] = 2.1; mat->data[1][0] = 5.2; mat->data[1][1] = -6.3; /*Printing the matrix*/ puts("The original matrix: "); PrintMatrix(mat); /*Creating a copy of the first matrix*/ matCopy = NMatrix_Clone(mat); /*Destroying the first matrix*/ mat = NMatrix_Destroy(mat); /*Printing the second matrix*/ puts("The copy of the matrix: "); PrintMatrix(matCopy); return 0; } /*Output: The original matrix: +3.300000 +2.100000 +5.200000 -6.300000 The copy of the matrix: +3.300000 +2.100000 +5.200000 -6.300000 */
No comments:
Post a Comment
Got a question regarding something in the article? Leave me a comment and I will get back at you as soon as I can!