Add down sampling while use ce to make CeMeasured and delete receiverIndices & TASIndices with no CeMeasured.

This commit is contained in:
sunwen
2024-05-09 13:35:07 +08:00
parent aab3b1c87c
commit 7719bfc09e
3 changed files with 86 additions and 55 deletions

View File

@@ -521,21 +521,29 @@ void MatlabCreatorConvertFp16Private::createCEMeasuredMat(std::shared_ptr<Parser
size_t measurementIDDims[2] ={1,measurementID.size()};
matvar_t* measurementIDVar = Mat_VarCreate("MeasurementID",MAT_C_CHAR,MAT_T_INT8,2,measurementIDDims,const_cast<char*>(measurementID.c_str()),0);
//receiverIndices
ReceiverIndicesPointer receiverIndices = metaData.getReceiverIndices();
double* writeDataOfReceiverIndices = new double[receiverIndices.getLength()];
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;
if(aParser->hasCEMeasured())
{
//receiverIndices
ReceiverIndicesPointer receiverIndices = metaData.getReceiverIndices();
double* writeDataOfReceiverIndices = new double[receiverIndices.getLength()];
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;
//TASIndices
TasIndicesPointer tasIndices = metaData.getTasIndices();
double* writeDataOfTasIndices = new double[tasIndices.getLength()];
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;
//TASIndices
TasIndicesPointer tasIndices = metaData.getTasIndices();
double* writeDataOfTasIndices = new double[tasIndices.getLength()];
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;
Mat_VarWrite(matfp,receiverIndicesVar,MAT_COMPRESSION_NONE);
Mat_VarWrite(matfp,tasIndicesVar,MAT_COMPRESSION_NONE);
Mat_VarFree(receiverIndicesVar);
Mat_VarFree(tasIndicesVar);
}
//CEMeasured
CEMeasuredData cEMeasured = aParser->getAllCEMeasuredData();
@@ -544,13 +552,19 @@ void MatlabCreatorConvertFp16Private::createCEMeasuredMat(std::shared_ptr<Parser
if(cEMeasured.isNull())
{
CEPointer ce = aParser->getCEData().getCE();
ceMeasuredData = new double[ce.getLength() * RECEIVE_ELEMENT_COUNT];
for(size_t i=0; i<RECEIVE_ELEMENT_COUNT; ++i)
size_t downSamplingSize = ce.getLength() / 4;
double* downSamplingCeMeasuredData = new double[downSamplingSize * RECEIVE_ELEMENT_COUNT];
for(size_t i=0; i<downSamplingSize; ++i)
{
std::copy(ce.get(), ce.get()+ce.getLength(), ceMeasuredData);
ceMeasuredData += RECEIVE_ELEMENT_COUNT;
downSamplingCeMeasuredData[i] = ce.get()[4*i];
}
cEMeasuredDims[0] = ce.getLength();
ceMeasuredData = downSamplingCeMeasuredData;
for(size_t i=0; i<RECEIVE_ELEMENT_COUNT-1; ++i)
{
downSamplingCeMeasuredData += downSamplingSize;
std::copy(ceMeasuredData, ceMeasuredData+downSamplingSize, downSamplingCeMeasuredData);
}
cEMeasuredDims[0] = downSamplingSize;
cEMeasuredDims[1] = RECEIVE_ELEMENT_COUNT;
}
else
@@ -578,15 +592,11 @@ void MatlabCreatorConvertFp16Private::createCEMeasuredMat(std::shared_ptr<Parser
matvar_t* ceSFVar = Mat_VarCreate("CE_SF",MAT_C_DOUBLE,MAT_T_DOUBLE,2,ceSFDims,&ceSF,0);
Mat_VarWrite(matfp,measurementIDVar,MAT_COMPRESSION_NONE);
Mat_VarWrite(matfp,receiverIndicesVar,MAT_COMPRESSION_NONE);
Mat_VarWrite(matfp,tasIndicesVar,MAT_COMPRESSION_NONE);
Mat_VarWrite(matfp,cEMeasuredVar,MAT_COMPRESSION_NONE);
Mat_VarWrite(matfp,ceOffSetVar,MAT_COMPRESSION_NONE);
Mat_VarWrite(matfp,ceSFVar,MAT_COMPRESSION_NONE);
Mat_VarFree(measurementIDVar);
Mat_VarFree(receiverIndicesVar);
Mat_VarFree(tasIndicesVar);
Mat_VarFree(cEMeasuredVar);
Mat_VarFree(ceOffSetVar);
Mat_VarFree(ceSFVar);

View File

@@ -485,21 +485,29 @@ void MatlabCreatorPrivate::createCEMeasuredMat(std::shared_ptr<Parser> aParser,
size_t measurementIDDims[2] ={1,measurementID.size()};
matvar_t* measurementIDVar = Mat_VarCreate("MeasurementID",MAT_C_CHAR,MAT_T_INT8,2,measurementIDDims,const_cast<char*>(measurementID.c_str()),0);
//receiverIndices
ReceiverIndicesPointer receiverIndices = metaData.getReceiverIndices();
double* writeDataOfReceiverIndices = new double[receiverIndices.getLength()];
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;
if(aParser->hasCEMeasured())
{
//receiverIndices
ReceiverIndicesPointer receiverIndices = metaData.getReceiverIndices();
double* writeDataOfReceiverIndices = new double[receiverIndices.getLength()];
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;
//TASIndices
TasIndicesPointer tasIndices = metaData.getTasIndices();
double* writeDataOfTasIndices = new double[tasIndices.getLength()];
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;
//TASIndices
TasIndicesPointer tasIndices = metaData.getTasIndices();
double* writeDataOfTasIndices = new double[tasIndices.getLength()];
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;
Mat_VarWrite(matfp,receiverIndicesVar,MAT_COMPRESSION_NONE);
Mat_VarWrite(matfp,tasIndicesVar,MAT_COMPRESSION_NONE);
Mat_VarFree(receiverIndicesVar);
Mat_VarFree(tasIndicesVar);
}
//CEMeasured
CEMeasuredData cEMeasured = aParser->getAllCEMeasuredData();
@@ -508,13 +516,19 @@ void MatlabCreatorPrivate::createCEMeasuredMat(std::shared_ptr<Parser> aParser,
if(cEMeasured.isNull())
{
CEPointer ce = aParser->getCEData().getCE();
ceMeasuredData = new short[ce.getLength() * RECEIVE_ELEMENT_COUNT];
for(size_t i=0; i<RECEIVE_ELEMENT_COUNT; ++i)
size_t downSamplingSize = ce.getLength() / 4;
short* downSamplingCeMeasuredData = new short[downSamplingSize * RECEIVE_ELEMENT_COUNT];
for(size_t i=0; i<downSamplingSize; ++i)
{
std::copy(ce.get(), ce.get()+ce.getLength(), ceMeasuredData);
ceMeasuredData += RECEIVE_ELEMENT_COUNT;
downSamplingCeMeasuredData[i] = ce.get()[4*i];
}
cEMeasuredDims[0] = ce.getLength();
ceMeasuredData = downSamplingCeMeasuredData;
for(size_t i=0; i<RECEIVE_ELEMENT_COUNT-1; ++i)
{
downSamplingCeMeasuredData += downSamplingSize;
std::copy(ceMeasuredData, ceMeasuredData+downSamplingSize, downSamplingCeMeasuredData);
}
cEMeasuredDims[0] = downSamplingSize;
cEMeasuredDims[1] = RECEIVE_ELEMENT_COUNT;
}
else
@@ -537,18 +551,15 @@ void MatlabCreatorPrivate::createCEMeasuredMat(std::shared_ptr<Parser> aParser,
matvar_t* ceSFVar = Mat_VarCreate("CE_SF",MAT_C_DOUBLE,MAT_T_DOUBLE,2,ceSFDims,&ceSF,0);
Mat_VarWrite(matfp,measurementIDVar,MAT_COMPRESSION_NONE);
Mat_VarWrite(matfp,receiverIndicesVar,MAT_COMPRESSION_NONE);
Mat_VarWrite(matfp,tasIndicesVar,MAT_COMPRESSION_NONE);
Mat_VarWrite(matfp,cEMeasuredVar,MAT_COMPRESSION_NONE);
Mat_VarWrite(matfp,ceOffSetVar,MAT_COMPRESSION_NONE);
Mat_VarWrite(matfp,ceSFVar,MAT_COMPRESSION_NONE);
Mat_VarFree(measurementIDVar);
Mat_VarFree(receiverIndicesVar);
Mat_VarFree(tasIndicesVar);
Mat_VarFree(cEMeasuredVar);
Mat_VarFree(ceOffSetVar);
Mat_VarFree(ceSFVar);
Mat_Close(matfp);
}

View File

@@ -577,6 +577,14 @@ void MatlabCreatorVariableWindowPrivate::createCEMeasuredMat(std::shared_ptr<Par
matvar_t* tasIndicesVar = Mat_VarCreate("TASIndices",MAT_C_DOUBLE,MAT_T_DOUBLE,2,tasIndicesDims,writeDataOfTasIndices,0);
delete[] writeDataOfTasIndices;
if(aParser->hasCEMeasured())
{
Mat_VarWrite(matfp,receiverIndicesVar,MAT_COMPRESSION_NONE);
Mat_VarWrite(matfp,tasIndicesVar,MAT_COMPRESSION_NONE);
Mat_VarFree(receiverIndicesVar);
Mat_VarFree(tasIndicesVar);
}
//CEMeasured
CEMeasuredData cEMeasured = aParser->getAllCEMeasuredData();
double* ceMeasuredData;
@@ -584,13 +592,19 @@ void MatlabCreatorVariableWindowPrivate::createCEMeasuredMat(std::shared_ptr<Par
if(cEMeasured.isNull())
{
CEPointer ce = aParser->getCEData().getCE();
ceMeasuredData = new double[ce.getLength() * RECEIVE_ELEMENT_COUNT];
for(size_t i=0; i<RECEIVE_ELEMENT_COUNT; ++i)
size_t downSamplingSize = ce.getLength() / 4;
double* downSamplingCeMeasuredData = new double[downSamplingSize * RECEIVE_ELEMENT_COUNT];
for(size_t i=0; i<downSamplingSize; ++i)
{
std::copy(ce.get(), ce.get()+ce.getLength(), ceMeasuredData);
ceMeasuredData += RECEIVE_ELEMENT_COUNT;
downSamplingCeMeasuredData[i] = ce.get()[4*i];
}
cEMeasuredDims[0] = ce.getLength();
ceMeasuredData = downSamplingCeMeasuredData;
for(size_t i=0; i<RECEIVE_ELEMENT_COUNT-1; ++i)
{
downSamplingCeMeasuredData += downSamplingSize;
std::copy(ceMeasuredData, ceMeasuredData+downSamplingSize, downSamplingCeMeasuredData);
}
cEMeasuredDims[0] = downSamplingSize;
cEMeasuredDims[1] = RECEIVE_ELEMENT_COUNT;
}
else
@@ -631,15 +645,11 @@ void MatlabCreatorVariableWindowPrivate::createCEMeasuredMat(std::shared_ptr<Par
matvar_t* ceSFVar = Mat_VarCreate("CE_SF",MAT_C_DOUBLE,MAT_T_DOUBLE,2,ceSFDims,&ceSF,0);
Mat_VarWrite(matfp,measurementIDVar,MAT_COMPRESSION_NONE);
Mat_VarWrite(matfp,receiverIndicesVar,MAT_COMPRESSION_NONE);
Mat_VarWrite(matfp,tasIndicesVar,MAT_COMPRESSION_NONE);
Mat_VarWrite(matfp,cEMeasuredVar,MAT_COMPRESSION_NONE);
Mat_VarWrite(matfp,ceOffSetVar,MAT_COMPRESSION_NONE);
Mat_VarWrite(matfp,ceSFVar,MAT_COMPRESSION_NONE);
Mat_VarFree(measurementIDVar);
Mat_VarFree(receiverIndicesVar);
Mat_VarFree(tasIndicesVar);
Mat_VarFree(cEMeasuredVar);
Mat_VarFree(ceOffSetVar);
Mat_VarFree(ceSFVar);