Add isfinite and isnan and their test.
This commit is contained in:
@@ -4,6 +4,7 @@
|
||||
|
||||
//必须在Eigen之前
|
||||
#include "AuroraDefs.h"
|
||||
#include "Function3D.h"
|
||||
#include "Matrix.h"
|
||||
|
||||
#include <cstddef>
|
||||
@@ -747,6 +748,22 @@ void Aurora::nantoval(Matrix& aMatrix, double val2) {
|
||||
srcV = srcV.array().isNaN().select(val2,srcV);
|
||||
}
|
||||
|
||||
Matrix Aurora::isnan(Matrix& aMatrix){
|
||||
Eigen::Map<Eigen::VectorXd> srcV(aMatrix.getData(),aMatrix.getDataSize());
|
||||
auto result = zeros(aMatrix.getDimSize(0),aMatrix.getDimSize(1),aMatrix.getDimSize(2));
|
||||
Eigen::Map<Eigen::VectorXd> resultV(result.getData(),result.getDataSize());
|
||||
resultV = srcV.array().isNaN().select(1.0,resultV);
|
||||
return result;
|
||||
}
|
||||
|
||||
Matrix Aurora::isfinite(Matrix& aMatrix){
|
||||
Eigen::Map<Eigen::VectorXd> srcV(aMatrix.getData(),aMatrix.getDataSize());
|
||||
auto result = zeros(aMatrix.getDimSize(0),aMatrix.getDimSize(1),aMatrix.getDimSize(2));
|
||||
Eigen::Map<Eigen::VectorXd> resultV(result.getData(),result.getDataSize());
|
||||
resultV = srcV.array().isFinite().select(1.0,resultV);
|
||||
return result;
|
||||
}
|
||||
|
||||
void Aurora::padding(Matrix &aMatrix, int aIndex, double aValue)
|
||||
{
|
||||
if(aMatrix.isNull() || !aMatrix.isVector())
|
||||
|
||||
Reference in New Issue
Block a user