diff --git a/src/helper_files/helper.cpp b/src/helper_files/helper.cpp index b421ff73d9061fa4bf2afad760e48f9f25a044d0..59681cab32ca766bcf150426367350fddc7b2ba0 100644 --- a/src/helper_files/helper.cpp +++ b/src/helper_files/helper.cpp @@ -1,4 +1,4 @@ - +#include <sicstus/sicstus.h> #include "helper.hpp" // adding some testing to the functions @@ -20,6 +20,7 @@ float *convertToArray(colvec vec) } return arr; } + float *convertToArray(rowvec vec) { colvec newVec = conv_to<colvec>::from(vec); @@ -94,3 +95,41 @@ mat convertArrayToMat(float *arr, int vecSize, int rowCount) } return matrix; } + +void returnMatrixInformation(mat matrix, float **mat, SP_integer *matColNum, SP_integer *matRowNum) +{ + // return the Matrix dimensions + *matColNum = matrix.n_cols; + *matRowNum = matrix.n_rows; + + // return the Matrix as one long Array + *mat = convertToArray(matrix); +} + +void returnMatrixInformation(Mat< size_t > matrix, float **mat, SP_integer *matColNum, SP_integer *matRowNum) +{ + // return the Matrix dimensions + *matColNum = matrix.n_cols; + *matRowNum = matrix.n_rows; + + // return the Matrix as one long Array + *mat = convertToArray(matrix); +} + +void returnVectorInformation(vec vector, float **vecArr, SP_integer *vecArrSize) +{ + // return the Matrix dimensions + *vecArrSize = vector.size(); + + // return the Matrix as one long Array + *vecArr = convertToArray(vector); +} + +void returnVectorInformation(Row< size_t > vector, float **vecArr, SP_integer *vecArrSize) +{ + // return the Matrix dimensions + *vecArrSize = vector.size(); + + // return the Matrix as one long Array + *vecArr = convertToArray(vector); +} \ No newline at end of file diff --git a/src/helper_files/helper.hpp b/src/helper_files/helper.hpp index 0a7d8f50e344220d593c84a2e4534cabb1d2c525..234cbade9c08af1ec5d96718e69b87be8dec4133 100644 --- a/src/helper_files/helper.hpp +++ b/src/helper_files/helper.hpp @@ -28,4 +28,12 @@ Row<size_t> convertArrayToVec(float *arr, int vecSize); mat convertArrayToMat(float *arr, int vecSize, int rowCount); +void returnMatrixInformation(mat matrix, float **mat, SP_integer *matColNum, SP_integer *matRowNum); + +void returnMatrixInformation(Mat< size_t > matrix, float **mat, SP_integer *matColNum, SP_integer *matRowNum); + +void returnVectorInformation(vec vector, float **vecArr, SP_integer *vecArrSize); + +void returnVectorInformation(Row< size_t > vector, float **vecArr, SP_integer *vecArrSize); + #endif diff --git a/src/methods/perceptron/perceptron.cpp b/src/methods/perceptron/perceptron.cpp index 789cf0a07725c63164a06db460a346eb8ef55875..2c8630c8e45bdfa7916aa1f5f6d8feee880568b9 100644 --- a/src/methods/perceptron/perceptron.cpp +++ b/src/methods/perceptron/perceptron.cpp @@ -116,10 +116,6 @@ void weights(float **weightsMatArr, SP_integer *weightsMatColNum, SP_integer *we // create the ReturnMat mat weightsReturnMat = perceptronGlobal.Weights(); - // return the Matrix dimensions - *weightsMatColNum = weightsReturnMat.n_cols; - *weightsMatRowNum = weightsReturnMat.n_rows; - - // return the Matrix as one long Array - *weightsMatArr = convertToArray(weightsReturnMat); + // return the Mat + returnMatrixInformation(weightsReturnMat, weightsMatArr, weightsMatColNum, weightsMatRowNum); }