diff --git a/src/Function2D.cpp b/src/Function2D.cpp index 9646fbb..fb0e94f 100644 --- a/src/Function2D.cpp +++ b/src/Function2D.cpp @@ -127,17 +127,19 @@ Matrix Aurora::std(const Matrix &aMatrix) { Matrix src = aMatrix.isComplex() ? Aurora::abs(aMatrix) : aMatrix; int calc_size = src.getDimSize(0) == 1 ? src.getDimSize(1) : src.getDimSize(0); int col = src.getDimSize(0) == 1?1:src.getDimSize(1) ; + double *temp = malloc(aMatrix.getDataSize(), aMatrix.getValueType()==Complex); + cblas_dcopy(aMatrix.getDataSize() * aMatrix.getValueType(),aMatrix.getData(),1,temp,1); auto std = Aurora::malloc(col); for (int i = 0; i < col; ++i) { - double *p = src.getData() + i * calc_size; + double *p = temp + i * calc_size; double mean = cblas_dasum(calc_size, p, 1) / calc_size; vdSubI(calc_size, p, 1, &mean, 0, p, 1); vdSqr(calc_size, p, p); std[i] = cblas_dasum(calc_size, p, 1) / (calc_size - 1); } + Aurora::free(temp); vdSqrt(src.getDimSize(1), std, std); return Matrix::New(std, 1, col, aMatrix.getDimSize(2)); - } Matrix Aurora::min(const Matrix &aMatrix, FunctionDirection direction, long& rowIdx, long& colIdx) { @@ -391,7 +393,7 @@ Matrix Aurora::mean(const Matrix &aMatrix, FunctionDirection direction, bool aIn case All: { Eigen::Map srcV(aMatrix.getData(),aMatrix.getDataSize()); - double * ret = malloc(1); + double * ret = malloc(64); ret[0] = srcV.array().mean(); return Matrix::New(ret,1); } diff --git a/src/Function3D.cpp b/src/Function3D.cpp index c233857..9e93a89 100644 --- a/src/Function3D.cpp +++ b/src/Function3D.cpp @@ -82,7 +82,7 @@ Matrix Aurora::zeros(int aRow, int aColumn, int aSlice) { double* data = malloc(arraySize); double zero = 0.0; cblas_dcopy(arraySize,&zero,0,data,1); - return Matrix::New(data,rowSize,colSize,aSlice); + return Matrix::New(data,rowSize,colSize,sliceSize); } Matrix Aurora::zeros(int aSquareRow) { diff --git a/src/main.cxx b/src/main.cxx index 5fb3b51..d240f0e 100644 --- a/src/main.cxx +++ b/src/main.cxx @@ -12,10 +12,6 @@ #include "Function1D.h" #include "Function2D.h" #include "Function3D.h" - -#include "spdlog/spdlog.h" -#include "spdlog/sinks/stdout_color_sinks.h" -#include "spdlog/sinks/basic_file_sink.h" #include "MatlabReader.h" int main() { @@ -23,7 +19,7 @@ int main() { Input i; MatchedFilter o; - m.read(&i,&o,"/mnt/d/TestData/testCreateMatchedFilter.mat"); + m.read(&i,&o,"/home/krad/TestData/testCreateMatchedFilter.mat"); bool measuredCEused = true,findDefects = i.mParams->mFindDefects,removeOutliers = i.mRemoveOutliersFromCEMeasured; Aurora::Matrix mFTime = Aurora::Matrix::fromRawData(i.mCe,4000,2304); @@ -62,7 +58,7 @@ int main() { sumDiff.getData()[k] = sum(abs(matchedFilter(Aurora::$, k).toMatrix()- maxMatchFilter)).getData()[0]; } - auto indexe = sumDiff > (mean(sumDiff)+2.596 * Aurora::std(sumDiff)); + auto indexe = sumDiff > (mean(sumDiff)+2.596 * Aurora::std(sumDiff).getScalar()); for (int l = 0; l < indexe.getDataSize(); ++l) { if ((bool)indexe.getData()[l]){ matchedFilter(Aurora::$,l) = matchedFilter(Aurora::$,minCol); @@ -75,5 +71,6 @@ int main() { mFTime2 = mFTime2/repmat(sum(Aurora::abs(mFTime2)),mFTime2.getDimSize(0),1); matchedFilter = fft(mFTime2); } + printf("run end\r\n"); return 0; }