#ifndef AURORA_FUNCTION2D_H #define AURORA_FUNCTION2D_H #include "Matrix.h" #include "Function1D.h" namespace Aurora { enum FunctionDirection{ Column, Row, All }; double immse(const Matrix& aImageA, const Matrix& aImageB); Matrix inv(const Matrix& aMatrix); Matrix inv(Matrix&& aMatrix); Matrix interp2(const Matrix& aX, const Matrix& aY, const Matrix& aV, const Matrix& aX1, const Matrix& aY1, InterpnMethod aMethod); Matrix interpn(const Matrix& aX, const Matrix& aY, const Matrix& aV, const Matrix& aX1, const Matrix& aY1, InterpnMethod aMethod); Matrix std(const Matrix& aMatrix); /** * 求矩阵最小值,可按行、列、单元, 目前不支持三维,不支持复数 * @param aMatrix 矩阵 * @param direction 方向,Column, Row, All * @return */ Matrix min(const Matrix& aMatrix,FunctionDirection direction = Column); Matrix min(const Matrix& aMatrix,FunctionDirection direction, long& rowIdx, long& colIdx); /** * 求矩阵最小值,可按行、列、单元, 目前不支持三维,不支持复数 * @param aMatrix 矩阵 * @param direction 方向,Column, Row, All * @return */ Matrix max(const Matrix& aMatrix,FunctionDirection direction = Column); Matrix max(const Matrix& aMatrix,FunctionDirection direction , long& rowIdx, long& colIdx); /** * 比较两个矩阵,求对应位置的最小值,不支持三维 * @attention 矩阵形状不一样时,如A为[MxN],则B应为标量或[1xN]的行向量 * @param aMatrix * @param aOther * @return */ Matrix min(const Matrix& aMatrix,const Matrix& aOther); /** * 求矩阵和,可按行、列、单元, 目前不支持三维,不支持复数 * @param aMatrix 矩阵 * @param direction 方向,Column, Row, All * @return */ Matrix sum(const Matrix& aMatrix,FunctionDirection direction = Column); /** * 求矩阵平均值,可按行、列、单元, 目前不支持三维,不支持复数 * @param aMatrix 矩阵 * @param direction 方向,Column, Row, All * @param aIncludeNan 是否包含nan * @return */ Matrix mean(const Matrix& aMatrix,FunctionDirection direction = Column, bool aIncludeNan = true); }; #endif //AURORA_FUNCTION2D_H