diff --git a/src/Function1D.cpp b/src/Function1D.cpp index 337074c..af170f6 100644 --- a/src/Function1D.cpp +++ b/src/Function1D.cpp @@ -442,6 +442,38 @@ Matrix Aurora::repmat(const Matrix& aMatrix,int aRowTimes, int aColumnTimes, int return Matrix(std::shared_ptr(resultData, Aurora::free), resultInfo, aMatrix.getValueType()); } +Matrix Aurora::repmat3d(const Matrix& aMatrix,int aRowTimes, int aColumnTimes, int aSliceTimes) +{ + if(aRowTimes < 1 || aColumnTimes < 1 || aMatrix.getDims() < 3 || aMatrix.isNull()) + { + return Matrix(); + } + double* start = aMatrix.getData(); + int rows = aMatrix.getDimSize(0); + int columns = aMatrix.getDimSize(1); + int slices = aMatrix.getDimSize(2); + double* extended2DimsData = Aurora::malloc(rows * columns * aRowTimes * aColumnTimes * slices); + Matrix extended2DimsMatrix = Matrix::New(extended2DimsData, aRowTimes*rows, aColumnTimes*columns, slices); + + for(int i=0; i