From 6700a48d1b27ec048b27d22ca9e905f97af8a474 Mon Sep 17 00:00:00 2001 From: kradchen Date: Mon, 8 May 2023 10:13:51 +0800 Subject: [PATCH] Add common to common folder --- src/common/common.cpp | 55 +++++++++++++++++++++++++++++++++++++++++++ src/common/common.h | 17 +++++++++++++ 2 files changed, 72 insertions(+) create mode 100644 src/common/common.cpp create mode 100644 src/common/common.h diff --git a/src/common/common.cpp b/src/common/common.cpp new file mode 100644 index 0000000..37a5cfb --- /dev/null +++ b/src/common/common.cpp @@ -0,0 +1,55 @@ +#include "common.h" +#include + +#include "Function.h" +#include "Function1D.h" +#include "Function2D.h" +#include "Function3D.h" +#include "Matrix.h" + +namespace Recon +{ + Aurora::Matrix reconstructBandpasssubsampling(Aurora::Matrix aMatrix, double aAScanReconstructionFreq, double aSampleRate) + { + double downsamplingfactor = aAScanReconstructionFreq / aSampleRate; + double minimalExpectedAScanLength = 48; + int expectedAScanlengthDS = (int)std::ceil(minimalExpectedAScanLength/downsamplingfactor); + double expectedAScanLength = std::max(expectedAScanlengthDS*downsamplingfactor, aMatrix.getDimSize(0)*downsamplingfactor); + expectedAScanlengthDS = std::ceil(expectedAScanLength/downsamplingfactor); + + double s1 = aAScanReconstructionFreq; + double f1Stride = s1 / (expectedAScanLength - 1); + double * f1Data = Aurora::malloc(expectedAScanLength); + auto f1 = Aurora::Matrix::New(f1Data,expectedAScanLength,1,1); + for (int i = 0; i (aSampleRate/2)) *(f1 <= aSampleRate); + auto idx_r = (f1 > (aAScanReconstructionFreq-aSampleRate)) * (f1 <= (aAScanReconstructionFreq-aSampleRate/2)); + if (Aurora::sum(idx_l).getScalar() == 0.0 || Aurora::sum(idx_r).getScalar() == 0.0){ + std::cerr<<"downsampled data, you have to set AScanReconstructionFreq higher"<length) needs to be fixed by padding"<