diff --git a/src/common/dataBlockCreation/removeDataFromArrays.cpp b/src/common/dataBlockCreation/removeDataFromArrays.cpp new file mode 100644 index 0000000..776ede3 --- /dev/null +++ b/src/common/dataBlockCreation/removeDataFromArrays.cpp @@ -0,0 +1,46 @@ +#include "removeDataFromArrays.h" +#include "Function.h" +#include "Function1D.h" +#include "Function2D.h" +#include "Matrix.h" +#include +#include + +using namespace Recon; +using namespace Aurora; + +Aurora::Matrix Recon::removeDataFromArrays(const Aurora::Matrix& aOutPutMatrix, const Aurora::Matrix& aRemoveList) +{ + // Matrix result = aOutPutMatrix; + // int minusNum = 0; + // for(int i=0; i> copyList; + size_t length = 0; + for(size_t i=0; i (PI * aAngleUpperLimit / 180))); + auto flags = Aurora::auroraNot((inbetweenAngle < (PI * transParams::angleLowerLimit / 180)) + + (inbetweenAngle > (PI * transParams::angleUpperLimit / 180))); reflectData = reflectData * flags; } return reflectData; diff --git a/src/reflectionReconstruction/dataFilter.h b/src/reflectionReconstruction/dataFilter.h index 82efb75..9bda6ac 100644 --- a/src/reflectionReconstruction/dataFilter.h +++ b/src/reflectionReconstruction/dataFilter.h @@ -6,9 +6,7 @@ namespace Recon { Aurora::Matrix filterReflectionData(const Aurora::Matrix &aVReceiverPositionBlock, const Aurora::Matrix &aVSenderPositionBlock, const Aurora::Matrix &aVSenderNormalBlock, - int aConstrictReflectionAngles, - double aAngleLowerLimit, - double aAngleUpperLimit); + int aConstrictReflectionAngles); } diff --git a/src/transmissionReconstruction/dataFilter/dataFilter.cpp b/src/transmissionReconstruction/dataFilter/dataFilter.cpp index e21880c..3f973d8 100644 --- a/src/transmissionReconstruction/dataFilter/dataFilter.cpp +++ b/src/transmissionReconstruction/dataFilter/dataFilter.cpp @@ -1,4 +1,5 @@ #include "dataFilter.h" +#include "src/config/config.h" #include #include @@ -79,18 +80,17 @@ namespace Recon { return sosValues; } - Aurora::Matrix filterTransmissionData(int aFilterSensitivity, const Aurora::Matrix &aVslBlock, + Aurora::Matrix filterTransmissionData(const Aurora::Matrix &aVslBlock, const Aurora::Matrix &aVsnBlock, const Aurora::Matrix &aVrlBlock, const Aurora::Matrix &aVrnBlock, std::vector &aMSensData, const Aurora::Matrix &aMSenderNormalBlock, - const Aurora::Matrix &aMReceiverNormalBlock, - double* params) + const Aurora::Matrix &aMReceiverNormalBlock) { - switch (aFilterSensitivity) { + switch (transParams::filterSensitivity) { case 1: - return filterTransmissionSensitivityMap(params[0], aVslBlock, aVsnBlock, aVrlBlock, aVrnBlock, aMSensData); + return filterTransmissionSensitivityMap(transParams::sensFilter, aVslBlock, aVsnBlock, aVrlBlock, aVrnBlock, aMSensData); case 2: - return filterTransmissionAngle(params[0], params[1], aMSenderNormalBlock, aMReceiverNormalBlock); + return filterTransmissionAngle(transParams::angleLowerLimit, transParams::angleUpperLimit, aMSenderNormalBlock, aMReceiverNormalBlock); } std::cerr<<"FilterSensitivity value error!"< &aMSensData, const Aurora::Matrix &aMSenderNormalBlock, - const Aurora::Matrix &aMReceiverNormalBlock, double *params); + const Aurora::Matrix &aMReceiverNormalBlock); Aurora::Matrix findDefectTransmissionData(const Aurora::Matrix &aVSNRList,double aSNRDifference); diff --git a/test/Common_Test.cpp b/test/Common_Test.cpp index bfa5922..ae57731 100644 --- a/test/Common_Test.cpp +++ b/test/Common_Test.cpp @@ -8,6 +8,7 @@ #include "common/getGeometryInfo.h" #include "common/dataBlockCreation/getAscanBlock.h" #include "common/dataBlockCreation/blockingGeometryInfo.h" +#include "common/dataBlockCreation/removeDataFromArrays.h" #include "Parser.h" #include "MatlabReader.h" @@ -328,3 +329,14 @@ TEST_F(Common_Test, blockingGeometryInfos) { EXPECT_DOUBLE_AE(senderPositionBlock[i], result.senderPositionBlock[i]); } } + +TEST_F(Common_Test, removeDataFromArrays) { + Aurora::Matrix a = Aurora::Matrix::fromRawData(new double[8]{1,2,3,4,5,6,7,8}, 1,8); + Aurora::Matrix b = Aurora::Matrix::fromRawData(new double[8]{0,0,1,1,1,1,0,0}, 1,8); + auto result = Recon::removeDataFromArrays(a, b); + EXPECT_DOUBLE_EQ(result.getDataSize(), 4); + EXPECT_DOUBLE_EQ(result[0], 3); + EXPECT_DOUBLE_EQ(result[1], 4); + EXPECT_DOUBLE_EQ(result[2], 5); + EXPECT_DOUBLE_EQ(result[3], 6); +} diff --git a/test/DataFilter_Test.cpp b/test/DataFilter_Test.cpp index 1aea8f1..e6c8a11 100644 --- a/test/DataFilter_Test.cpp +++ b/test/DataFilter_Test.cpp @@ -122,9 +122,7 @@ TEST_F(DataFilter_Test, filterReflectionData) { auto senderPositionBlock = Aurora::transpose(Aurora::Matrix::fromRawData(new double[9]{-0.12,-0.12,-0.12,-0.01,-0.01,-0.01,0.03,0.03,0.03}, 3, 3)); auto senderNormalBlock = Aurora::transpose(Aurora::Matrix::fromRawData(new double[9]{0.99,0.99,0.99,0.10,0.10,0.10,0,0,0}, 3, 3)); int constrictReflectionAngles = 1; - double lowerAngle = 45; - double upperAngle = 360; - auto result = Recon::filterReflectionData(receiverPositionBlock, senderPositionBlock, senderNormalBlock, constrictReflectionAngles, lowerAngle, upperAngle); + auto result = Recon::filterReflectionData(receiverPositionBlock, senderPositionBlock, senderNormalBlock, constrictReflectionAngles); EXPECT_EQ(3, result.getDataSize()); EXPECT_DOUBLE_AE(result[0],1); EXPECT_DOUBLE_AE(result[1],1);