From 9908202e9f9f5cca538bf6090e8ab53e578701c0 Mon Sep 17 00:00:00 2001 From: kradchen Date: Fri, 2 Jun 2023 13:44:14 +0800 Subject: [PATCH] single bug fix --- .../dataFilter/dataFilter.cpp | 12 ++++++++++-- src/transmissionReconstruction/dataPreperation.cpp | 6 ++++++ .../reconstruction/buildMatrix/buildMatrix.cpp | 4 +--- .../solvingEquationSystem/TVAL/TVAL.cpp | 9 ++++----- 4 files changed, 21 insertions(+), 10 deletions(-) diff --git a/src/transmissionReconstruction/dataFilter/dataFilter.cpp b/src/transmissionReconstruction/dataFilter/dataFilter.cpp index 34e5c01..0fcd160 100644 --- a/src/transmissionReconstruction/dataFilter/dataFilter.cpp +++ b/src/transmissionReconstruction/dataFilter/dataFilter.cpp @@ -55,9 +55,17 @@ namespace Recon { // 1))./(vecnorm(senderNormalBlock, 2, 1) .* vecnorm(receiverNormalBlock, 2, // 1) auto transData = ones(1, aMSenderNormalBlock.getDimSize(1)); - auto inbetweenAngle = acosd(dot(aMSenderNormalBlock, aMReceiverNormalBlock) / + Aurora::Matrix inbetweenAngle; + { + auto tempM = dot(aMSenderNormalBlock, aMReceiverNormalBlock) / (vecnorm(aMSenderNormalBlock, Norm2, 1) * - vecnorm(aMReceiverNormalBlock, Norm2, 1))); + vecnorm(aMReceiverNormalBlock, Norm2, 1)); + float* temp = new float[tempM.getDataSize()]{0}; + std::copy(tempM.getData(),tempM.getData()+tempM.getDataSize(),temp); + std::copy(temp,temp+tempM.getDataSize(),tempM.getData()); + delete [] temp; + inbetweenAngle = acosd(tempM); + } #pragma omp parallel for for (size_t i = 0; i < transData.getDataSize(); i++) { diff --git a/src/transmissionReconstruction/dataPreperation.cpp b/src/transmissionReconstruction/dataPreperation.cpp index 0d1f0b7..351dcdf 100644 --- a/src/transmissionReconstruction/dataPreperation.cpp +++ b/src/transmissionReconstruction/dataPreperation.cpp @@ -31,6 +31,12 @@ namespace Recon Aurora::Matrix prepareAScansForTransmissionDetection(const Aurora::Matrix& aMaScanBlock, const Aurora::Matrix aVGainBlock) { auto ret = aMaScanBlock/Aurora::repmat(aVGainBlock,aMaScanBlock.getDimSize(0),1); + { + float* temp = new float[ret.getDataSize()]{0}; + std::copy(ret.getData(),ret.getData()+ret.getDataSize(),temp); + std::copy(temp,temp+ret.getDataSize(),ret.getData()); + delete [] temp; + } ret = ret-Aurora::repmat(Aurora::mean(ret),aMaScanBlock.getDimSize(0),1); return ret; } diff --git a/src/transmissionReconstruction/reconstruction/buildMatrix/buildMatrix.cpp b/src/transmissionReconstruction/reconstruction/buildMatrix/buildMatrix.cpp index d186d4b..932d44a 100644 --- a/src/transmissionReconstruction/reconstruction/buildMatrix/buildMatrix.cpp +++ b/src/transmissionReconstruction/reconstruction/buildMatrix/buildMatrix.cpp @@ -220,9 +220,7 @@ namespace Recon uint *temp = new uint[path.getDataSize()]{0}; //uint32(path) - std::copy(path.getData(),path.getData()+path.getDataSize(),temp); - std::copy(temp,temp+path.getDataSize(),path.getData()); - delete [] temp; + Aurora::round(path); result.weighting = traceLineResult.ds; result.path = correctPathToImgDimensions(path, dims); result.pathLen = result.path.getDimSize(0); diff --git a/src/transmissionReconstruction/reconstruction/solvingEquationSystem/TVAL/TVAL.cpp b/src/transmissionReconstruction/reconstruction/solvingEquationSystem/TVAL/TVAL.cpp index 152b2e5..60addf8 100644 --- a/src/transmissionReconstruction/reconstruction/solvingEquationSystem/TVAL/TVAL.cpp +++ b/src/transmissionReconstruction/reconstruction/solvingEquationSystem/TVAL/TVAL.cpp @@ -170,6 +170,10 @@ namespace Recon double * csrValues; sparse_index_base_t index; mkl_sparse_d_export_csr(csrA, &index, &n_rows, &n_cols, &rows_start, &rows_end, &col_indx, &csrValues); + mkl_sparse_destroy(A); + delete [] xIdxs; + delete [] yIdxs; + int *row_idx = new int[n_rows+1]; std::copy(rows_start,rows_start+n_rows,row_idx); row_idx[n_rows] = rows_end[n_rows-1]; @@ -178,14 +182,9 @@ namespace Recon size_t bDims[3]={(size_t)b.getDimSize(0),(size_t)b.getDimSize(1),(size_t)b.getDimSize(2)}; size_t rdims[3] = {(size_t)dims[0], (size_t)dims[1], (size_t)dims[2]}; bool pagelocked = false; - - auto result = TVALGPU(row_idx, col_indx, csrValues, M.getM(), M.getN(), nz, bData, bDims, rdims, opt, device, false); - mkl_sparse_destroy(A); mkl_sparse_destroy(csrA); delete [] row_idx; - delete [] xIdxs; - delete [] yIdxs; delete [] bData; return Aurora::Matrix::fromRawData(result.data, result.dims[0],result.dims[1],result.dims[2]); // return Aurora::Matrix();