diff --git a/src/transmissionReconstruction/dataFilter/dataFilter.cpp b/src/transmissionReconstruction/dataFilter/dataFilter.cpp index 0a5fd0d..6cefb4d 100644 --- a/src/transmissionReconstruction/dataFilter/dataFilter.cpp +++ b/src/transmissionReconstruction/dataFilter/dataFilter.cpp @@ -113,6 +113,7 @@ namespace Recon { std_SNRListData[j++] = aVSNRList[i]; } } + meanSNR = meanSNR/(double)j; Aurora::Matrix std_SNRList = Aurora::Matrix::New(std_SNRListData,count,1,1); std_SNRList = Aurora::std(std_SNRList); double localSNRDifference = 2 * std_SNRList.getScalar(); diff --git a/test/DataFilter_Test.cpp b/test/DataFilter_Test.cpp index 8a09bee..a257605 100644 --- a/test/DataFilter_Test.cpp +++ b/test/DataFilter_Test.cpp @@ -4,6 +4,7 @@ #include "Function1D.h" #include "MatlabReader.h" #include "Matrix.h" +#include "config/config.h" #include "reflectionReconstruction/dataFilter.h" #include "transmissionReconstruction/dataFilter/dataFilter.h" @@ -101,19 +102,18 @@ TEST_F(DataFilter_Test, calculateSnr) { } TEST_F(DataFilter_Test, findDefectTransmissionData) { - MatlabReader m("/home/krad/TestData/finddefect.mat"); + MatlabReader m("/home/sun/testData/findDefectTransmissionData.mat"); double *dataA = new double[3]{1, std::numeric_limits::infinity(), -std::numeric_limits::infinity()}; - auto SNRList = m.read("SNRList"); - auto SNRList2 = Aurora::Matrix::fromRawData(dataA, 3,1,1); - auto result = m.read("valid"); + auto SNRList = m.read("vsnrlist"); + auto SNRList2 = m.read("snrdifference"); + auto validOut = m.read("validOut"); - auto valid = Recon::findDefectTransmissionData(SNRList2,0.99); - EXPECT_DOUBLE_AE(valid[0],1); - EXPECT_DOUBLE_AE(valid[1],0); - valid = Recon::findDefectTransmissionData(SNRList,0.99); + auto valid1 = Recon::findDefectTransmissionData(SNRList,Recon::transParams::snrThreshold); + auto valid2 = Recon::findDefectTransmissionData(SNRList2,Recon::transParams::snrThreshold); + auto valid = valid1*valid2; for (size_t i = 0; i < valid.getDataSize(); i++) { - EXPECT_DOUBLE_AE(valid[i],0); + EXPECT_DOUBLE_AE(validOut[i],valid[i]); } }