Fix std and zeros bug.
This commit is contained in:
@@ -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<Eigen::VectorXd> srcV(aMatrix.getData(),aMatrix.getDataSize());
|
||||
double * ret = malloc(1);
|
||||
double * ret = malloc(64);
|
||||
ret[0] = srcV.array().mean();
|
||||
return Matrix::New(ret,1);
|
||||
}
|
||||
|
||||
@@ -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) {
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user