From 7719bfc09e18ba854ab4a5394bc1ef512252807f Mon Sep 17 00:00:00 2001 From: sunwen Date: Thu, 9 May 2024 13:35:07 +0800 Subject: [PATCH] Add down sampling while use ce to make CeMeasured and delete receiverIndices & TASIndices with no CeMeasured. --- .../MatlabCreatorConvertFp16Private.cpp | 56 ++++++++++-------- src/MatLab/MatlabCreatorPrivate.cpp | 57 +++++++++++-------- .../MatlabCreatorVariableWindowPrivate.cpp | 28 ++++++--- 3 files changed, 86 insertions(+), 55 deletions(-) diff --git a/src/MatLab/MatlabCreatorConvertFp16Private.cpp b/src/MatLab/MatlabCreatorConvertFp16Private.cpp index 71b5790..49ccf26 100644 --- a/src/MatLab/MatlabCreatorConvertFp16Private.cpp +++ b/src/MatLab/MatlabCreatorConvertFp16Private.cpp @@ -521,21 +521,29 @@ void MatlabCreatorConvertFp16Private::createCEMeasuredMat(std::shared_ptr(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_ptrgetCEData().getCE(); - ceMeasuredData = new double[ce.getLength() * RECEIVE_ELEMENT_COUNT]; - for(size_t i=0; i aParser, size_t measurementIDDims[2] ={1,measurementID.size()}; matvar_t* measurementIDVar = Mat_VarCreate("MeasurementID",MAT_C_CHAR,MAT_T_INT8,2,measurementIDDims,const_cast(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 aParser, if(cEMeasured.isNull()) { CEPointer ce = aParser->getCEData().getCE(); - ceMeasuredData = new short[ce.getLength() * RECEIVE_ELEMENT_COUNT]; - for(size_t i=0; i 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); } diff --git a/src/MatLab/MatlabCreatorVariableWindowPrivate.cpp b/src/MatLab/MatlabCreatorVariableWindowPrivate.cpp index 4800cda..0ea31ad 100644 --- a/src/MatLab/MatlabCreatorVariableWindowPrivate.cpp +++ b/src/MatLab/MatlabCreatorVariableWindowPrivate.cpp @@ -577,6 +577,14 @@ void MatlabCreatorVariableWindowPrivate::createCEMeasuredMat(std::shared_ptrhasCEMeasured()) + { + 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_ptrgetCEData().getCE(); - ceMeasuredData = new double[ce.getLength() * RECEIVE_ELEMENT_COUNT]; - for(size_t i=0; i