Add padding and test

This commit is contained in:
kradchen
2023-05-06 14:14:46 +08:00
parent 849d0bb961
commit e992606f60
3 changed files with 43 additions and 0 deletions

View File

@@ -633,3 +633,23 @@ void Aurora::nantoval(Matrix& aMatrix, double val2) {
Eigen::Map<Eigen::VectorXd> srcV(aMatrix.getData(),aMatrix.getDataSize());
srcV = srcV.array().isNaN().select(val2,srcV);
}
void Aurora::padding(Matrix &aMatrix, int aIndex, double aValue)
{
if(aMatrix.isNull() || !aMatrix.isVector())
{
std::cerr<<"padding only support vector"<<std::endl;
return;
}
if (aMatrix.getDataSize()>aIndex){
aMatrix.getData()[aIndex] = aValue;
return;
}
int size = (aIndex+1);
double* newData = malloc(size,aMatrix.isComplex());
cblas_dcopy(aMatrix.getDataSize()*aMatrix.getValueType(),
aMatrix.getData(),1,newData,1);
cblas_dcopy((size-aMatrix.getDataSize())*aMatrix.getValueType(),
&aValue,0,newData+aMatrix.getDataSize()*aMatrix.getValueType(),1);
aMatrix = Matrix::New(newData,size,1,1,aMatrix.getValueType());
}