Parser新采集脚本对应。

This commit is contained in:
sunwen
2023-04-18 10:37:23 +08:00
parent bd3bd664e7
commit 5afffd143c
14 changed files with 156 additions and 150 deletions

View File

@@ -83,7 +83,7 @@ void MatlabCreatorPrivate::setDirectoryPath(const std::string& aDirectoryPath)
mFileList = FileListHelper::getFileList(mDirectoryPath);
}
bool MatlabCreatorPrivate::createKITMat()
bool MatlabCreatorPrivate::createKITMat(const std::string& aOutputPath)
{
progress = 0;
if(mFileList.size() == 0)
@@ -108,33 +108,33 @@ bool MatlabCreatorPrivate::createKITMat()
unsigned int tasNum = 0;
std::vector<std::shared_ptr<std::thread>> threads(static_cast<size_t>(threadCount));
std::string dirPath = mDirectoryPath + "_mat";
std::string dirPath = aOutputPath;
DirHelper dir;
if(!dir.exists(dirPath))
{
dir.mkdir(dirPath);
}
// for(unsigned int i=0;i<threadCount;++i)
// {
// if(i == threadRemainder && threadRemainder!=0)
// {
// --tasOffSet;
// }
// threads[i] = std::shared_ptr<std::thread>(new std::thread(&MatlabCreatorPrivate::createKITMatInThread, this, parser->clone(), tasNum, tasOffSet));
// tasNum += tasOffSet;
// }
// for(unsigned int i=0; i< threadCount; ++i)
// {
// threads[i]->join();
// }
for(unsigned int i=0;i<threadCount;++i)
{
if(i == threadRemainder && threadRemainder!=0)
{
--tasOffSet;
}
threads[i] = std::shared_ptr<std::thread>(new std::thread(&MatlabCreatorPrivate::createKITMatInThread, this, parser->clone(), tasNum, tasOffSet, dirPath));
tasNum += tasOffSet;
}
for(unsigned int i=0; i< threadCount; ++i)
{
threads[i]->join();
}
createCEMat(parser,dirPath);
createInfoMat(parser,dirPath);
createPatDataMat(parser,dirPath);
createTasTempMat(parser,dirPath);
createJumoTempMat(parser,dirPath);
createMovementsMat(parser,dirPath);
//createCEMeasuredMat(parser,dirPath);
createCEMeasuredMat(parser,dirPath);
createTasTemCompMat(parser,dirPath);
createMeasurementRotationMat(parser,dirPath);
@@ -142,9 +142,9 @@ bool MatlabCreatorPrivate::createKITMat()
return true;
}
void MatlabCreatorPrivate::createKITMatInThread(std::shared_ptr<Parser> aParser, unsigned short aStartTasNum,unsigned short aTasCount)
void MatlabCreatorPrivate::createKITMatInThread(std::shared_ptr<Parser> aParser, unsigned short aStartTasNum,unsigned short aTasCount, const std::string& aOutputPath)
{
std::string dirPath = mDirectoryPath + "_mat";
std::string dirPath = aOutputPath;
DirHelper dir;
ShotList* shotList = aParser->getShotList().get();
for(unsigned short t=aStartTasNum;t<aStartTasNum+aTasCount;++t)
@@ -201,11 +201,11 @@ void MatlabCreatorPrivate::createEmitterMat(std::shared_ptr<Parser> aParser,cons
ReceiverIndicesPointer receiverIndicesPointer = aParser->getMetaData().getReceiverIndices();
size_t receiverIndicesDims[2] = {receiverIndicesPointer.getLength(),1};
double* receiverIndicesData = new double[receiverIndicesPointer.getLength()];
std::copy(receiverIndicesPointer.getArray().get(),receiverIndicesPointer.getArray().get() + receiverIndicesPointer.getLength(), receiverIndicesData);
std::copy(receiverIndicesPointer.get(),receiverIndicesPointer.get() + receiverIndicesPointer.getLength(), receiverIndicesData);
TasIndicesPointer tasIndicesPointer = aParser->getMetaData().getTasIndices();
size_t tasIndicesDims[2] = {tasIndicesPointer.getLength(),1};
double* tasIndicesData = new double[tasIndicesPointer.getLength()];
std::copy(tasIndicesPointer.getArray().get(),tasIndicesPointer.getArray().get() + tasIndicesPointer.getLength(), tasIndicesData);
std::copy(tasIndicesPointer.get(),tasIndicesPointer.get() + tasIndicesPointer.getLength(), tasIndicesData);
mat_t* matfp = nullptr;
matfp = Mat_CreateVer(aFileName.c_str(),nullptr,MAT_FT_DEFAULT);
if ( nullptr == matfp )
@@ -299,7 +299,7 @@ void MatlabCreatorPrivate::createCEMat(std::shared_ptr<Parser> aParser, const st
size_t ceOffSetDims[2] = {1,1};
double ceSf = ceData.getCE_SF();
double ceOffSet = ceData.getCEOffset();
ceVar = Mat_VarCreate("CE",MAT_C_DOUBLE,MAT_T_UINT16,2,ceDims,ce.getArray().get(),0);
ceVar = Mat_VarCreate("CE",MAT_C_DOUBLE,MAT_T_UINT16,2,ceDims,ce.get(),0);
ceSfVar = Mat_VarCreate("CE_SF",MAT_C_DOUBLE,MAT_T_DOUBLE,2,ceSfDims,&ceSf,0);
ceOffSetVar = Mat_VarCreate("CEOffset",MAT_C_DOUBLE,MAT_T_DOUBLE,2,ceOffSetDims,&ceOffSet,0);
Mat_VarWrite(matfp,ceVar,MAT_COMPRESSION_NONE);
@@ -332,7 +332,7 @@ void MatlabCreatorPrivate::createInfoMat(std::shared_ptr<Parser> aParser, const
std::shared_ptr<ShotList> shotList = aParser->getShotList();
ShotListArray shotListArray = shotList->getShotListArray();
size_t shotListDims[2] ={shotListArray.getLength()/4,4};
matvar_t* shotListVar = Mat_VarCreate("shotlist",MAT_C_DOUBLE,MAT_T_DOUBLE,2,shotListDims,shotListArray.getArray().get(),0);
matvar_t* shotListVar = Mat_VarCreate("shotlist",MAT_C_DOUBLE,MAT_T_DOUBLE,2,shotListDims,shotListArray.get(),0);
Mat_VarSetStructFieldByName(structVar, "shotlist", 0, shotListVar);
//SampleNumber
MetaData metaData = aParser->getMetaData();
@@ -421,7 +421,7 @@ void MatlabCreatorPrivate::createCEMeasuredMat(std::shared_ptr<Parser> aParser,
//receiverIndices
ReceiverIndicesPointer receiverIndices = metaData.getReceiverIndices();
double* writeDataOfReceiverIndices = new double[receiverIndices.getLength()];
std::copy(receiverIndices.getArray().get(), receiverIndices.getArray().get() + receiverIndices.getLength(), writeDataOfReceiverIndices);
std::copy(receiverIndices.get(), receiverIndices.get() + receiverIndices.getLength(), writeDataOfReceiverIndices);
size_t receiverIndicesDims[2] ={receiverIndices.getLength(),1};
matvar_t* receiverIndicesVar = Mat_VarCreate("receiverIndices",MAT_C_DOUBLE,MAT_T_DOUBLE,2,receiverIndicesDims,writeDataOfReceiverIndices,0);
delete[] writeDataOfReceiverIndices;
@@ -429,7 +429,7 @@ void MatlabCreatorPrivate::createCEMeasuredMat(std::shared_ptr<Parser> aParser,
//TASIndices
TasIndicesPointer tasIndices = metaData.getTasIndices();
double* writeDataOfTasIndices = new double[tasIndices.getLength()];
std::copy(tasIndices.getArray().get(), tasIndices.getArray().get() + tasIndices.getLength(), writeDataOfTasIndices);
std::copy(tasIndices.get(), tasIndices.get() + tasIndices.getLength(), writeDataOfTasIndices);
size_t tasIndicesDims[2] ={tasIndices.getLength(),1};
matvar_t* tasIndicesVar = Mat_VarCreate("TASIndices",MAT_C_DOUBLE,MAT_T_DOUBLE,2,tasIndicesDims,writeDataOfTasIndices,0);
delete[] writeDataOfTasIndices;
@@ -486,7 +486,7 @@ void MatlabCreatorPrivate::createJumoTempMat(std::shared_ptr<Parser> aParser, co
JumoTemperaturePointer jumoTemperature1 = temperatureData.getJumoTemperature1();
unsigned long long jumoLength = jumoTemperature1.getLength();
double* writeData = new double[jumoLength];
std::copy(jumoTemperature1.getArray().get(), jumoTemperature1.getArray().get() + jumoLength, writeData);
std::copy(jumoTemperature1.get(), jumoTemperature1.get() + jumoLength, writeData);
size_t jumoTemperature1Dims[2] ={1,jumoTemperature1.getLength()};
matvar_t* jumoTemperature1Var = Mat_VarCreate("JumoTemperature1",MAT_C_DOUBLE,MAT_T_DOUBLE,2,jumoTemperature1Dims,writeData,0);
delete[] writeData;
@@ -495,7 +495,7 @@ void MatlabCreatorPrivate::createJumoTempMat(std::shared_ptr<Parser> aParser, co
JumoTemperaturePointer jumoTemperature2 = temperatureData.getJumoTemperature2();
jumoLength = jumoTemperature2.getLength();
writeData = new double[jumoLength];
std::copy(jumoTemperature2.getArray().get(), jumoTemperature2.getArray().get() + jumoLength, writeData);
std::copy(jumoTemperature2.get(), jumoTemperature2.get() + jumoLength, writeData);
size_t jumoTemperature2Dims[2] ={1,jumoTemperature2.getLength()};
matvar_t* jumoTemperature2Var = Mat_VarCreate("JumoTemperature2",MAT_C_DOUBLE,MAT_T_DOUBLE,2,jumoTemperature2Dims,writeData,0);
delete[] writeData;
@@ -504,7 +504,7 @@ void MatlabCreatorPrivate::createJumoTempMat(std::shared_ptr<Parser> aParser, co
JumoTemperaturePointer jumoTemperature3 = temperatureData.getJumoTemperature3();
jumoLength = jumoTemperature3.getLength();
writeData = new double[jumoLength];
std::copy(jumoTemperature3.getArray().get(), jumoTemperature3.getArray().get() + jumoLength, writeData);
std::copy(jumoTemperature3.get(), jumoTemperature3.get() + jumoLength, writeData);
size_t jumoTemperature3Dims[2] ={1,jumoTemperature3.getLength()};
matvar_t* jumoTemperature3Var = Mat_VarCreate("JumoTemperature3",MAT_C_DOUBLE,MAT_T_DOUBLE,2,jumoTemperature3Dims,writeData,0);
delete[] writeData;
@@ -513,7 +513,7 @@ void MatlabCreatorPrivate::createJumoTempMat(std::shared_ptr<Parser> aParser, co
JumoTemperaturePointer jumoTemperature4 = temperatureData.getJumoTemperature4();
jumoLength = jumoTemperature4.getLength();
writeData = new double[jumoLength];
std::copy(jumoTemperature4.getArray().get(), jumoTemperature4.getArray().get() + jumoLength, writeData);
std::copy(jumoTemperature4.get(), jumoTemperature4.get() + jumoLength, writeData);
size_t jumoTemperature4Dims[2] ={1,jumoTemperature4.getLength()};
matvar_t* jumoTemperature4Var = Mat_VarCreate("JumoTemperature4",MAT_C_DOUBLE,MAT_T_DOUBLE,2,jumoTemperature4Dims,writeData,0);
delete[] writeData;
@@ -574,7 +574,7 @@ void MatlabCreatorPrivate::createTasTempMat(std::shared_ptr<Parser> aParser, con
double* tempData = writeData;
for(unsigned int i=0;i<temperature.size();++i)
{
std::copy(temperature.at(i).getArray().get(), temperature.at(i).getArray().get() + temperature.at(i).getLength(), tempData);
std::copy(temperature.at(i).get(), temperature.at(i).get() + temperature.at(i).getLength(), tempData);
tempData+=temperature.at(i).getLength();
}
matvar_t* tasTemperatureVar = Mat_VarCreate("TASTemperature",MAT_C_DOUBLE,MAT_T_DOUBLE,3,tasTemperatureDims,writeData,0);
@@ -597,7 +597,7 @@ void MatlabCreatorPrivate::createTasTempMat(std::shared_ptr<Parser> aParser, con
{
for(unsigned int j=0;j<temperatureRawData.at(i).size();++j)
{
std::copy(temperatureRawData.at(i).at(j).getArray().get(), temperatureRawData.at(i).at(j).getArray().get() + temperatureRawData.at(i).at(j).getLength(), tempData);
std::copy(temperatureRawData.at(i).at(j).get(), temperatureRawData.at(i).at(j).get() + temperatureRawData.at(i).at(j).getLength(), tempData);
tempData+=temperatureRawData.at(i).at(j).getLength();
}
}
@@ -637,7 +637,7 @@ void MatlabCreatorPrivate::createTasTemCompMat(std::shared_ptr<Parser> aParser,
double* tempData = writeData;
for(unsigned int i=0;i<temperatureComp.size();++i)
{
std::copy(temperatureComp.at(i).getArray().get(), temperatureComp.at(i).getArray().get() + temperatureComp.at(i).getLength(), tempData);
std::copy(temperatureComp.at(i).get(), temperatureComp.at(i).get() + temperatureComp.at(i).getLength(), tempData);
tempData+=temperatureComp.at(i).getLength();
}
matvar_t* tasTemperatureVar = Mat_VarCreate("TASTemperature",MAT_C_DOUBLE,MAT_T_DOUBLE,3,tasTemperatureCompDims,writeData,0);
@@ -678,7 +678,7 @@ void MatlabCreatorPrivate::createMeasurementRotationMat(std::shared_ptr<Parser>
unsigned long long rotationMatrixLength = rotationMatrix.getLength();
size_t rotationMatrixDims[2] ={4,4};
double* writeData = new double[rotationMatrixLength];
std::copy(rotationMatrix.getArray().get(),rotationMatrix.getArray().get() + rotationMatrixLength,writeData);
std::copy(rotationMatrix.get(),rotationMatrix.get() + rotationMatrixLength,writeData);
matvar_t* rotationMatrixVar = Mat_VarCreate("rotationMatrix",MAT_C_DOUBLE,MAT_T_DOUBLE,2,rotationMatrixDims,writeData,0);
delete[] writeData;
@@ -716,16 +716,16 @@ void MatlabCreatorPrivate::createMovementsMat(std::shared_ptr<Parser> aParser, c
MovementsListRealPointer movementsListReal = aParser->getMovementData().getMovementsListReal();
unsigned long long movementsListRealLength = movementsListReal.getLength();
unsigned short aperturePositionNum = metaData.getAperturePositionNumber();
size_t movementsListRealDims[2] ={aperturePositionNum,aperturePositionNum};
size_t movementsListRealDims[2] ={aperturePositionNum,2}; //2 means heigh and rotation;
double* writeData = new double[movementsListRealLength];
std::copy(movementsListReal.getArray().get(),movementsListReal.getArray().get()+movementsListRealLength,writeData);
std::copy(movementsListReal.get(),movementsListReal.get()+movementsListRealLength,writeData);
matvar_t* movementsListRealVar = Mat_VarCreate("MovementsListreal",MAT_C_DOUBLE,MAT_T_DOUBLE,2,movementsListRealDims,writeData,0);
delete[] writeData;
//TimeStamps
TimeStampsPointer timeStamps = metaData.getTimeStamps();
size_t timeStampsDims[2] ={1,timeStamps.getLength()};
matvar_t* timeStampsVar = Mat_VarCreate("TimeStamps",MAT_C_DOUBLE,MAT_T_DOUBLE,2,timeStampsDims,timeStamps.getArray().get(),0);
matvar_t* timeStampsVar = Mat_VarCreate("TimeStamps",MAT_C_DOUBLE,MAT_T_DOUBLE,2,timeStampsDims,timeStamps.get(),0);
//MeasurementID
std::string measurementID = metaData.getMeasurementID();