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;
|
Matrix src = aMatrix.isComplex() ? Aurora::abs(aMatrix) : aMatrix;
|
||||||
int calc_size = src.getDimSize(0) == 1 ? src.getDimSize(1) : src.getDimSize(0);
|
int calc_size = src.getDimSize(0) == 1 ? src.getDimSize(1) : src.getDimSize(0);
|
||||||
int col = src.getDimSize(0) == 1?1:src.getDimSize(1) ;
|
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);
|
auto std = Aurora::malloc(col);
|
||||||
for (int i = 0; i < col; ++i) {
|
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;
|
double mean = cblas_dasum(calc_size, p, 1) / calc_size;
|
||||||
vdSubI(calc_size, p, 1, &mean, 0, p, 1);
|
vdSubI(calc_size, p, 1, &mean, 0, p, 1);
|
||||||
vdSqr(calc_size, p, p);
|
vdSqr(calc_size, p, p);
|
||||||
std[i] = cblas_dasum(calc_size, p, 1) / (calc_size - 1);
|
std[i] = cblas_dasum(calc_size, p, 1) / (calc_size - 1);
|
||||||
}
|
}
|
||||||
|
Aurora::free(temp);
|
||||||
vdSqrt(src.getDimSize(1), std, std);
|
vdSqrt(src.getDimSize(1), std, std);
|
||||||
return Matrix::New(std, 1, col, aMatrix.getDimSize(2));
|
return Matrix::New(std, 1, col, aMatrix.getDimSize(2));
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
Matrix Aurora::min(const Matrix &aMatrix, FunctionDirection direction, long& rowIdx, long& colIdx) {
|
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:
|
case All:
|
||||||
{
|
{
|
||||||
Eigen::Map<Eigen::VectorXd> srcV(aMatrix.getData(),aMatrix.getDataSize());
|
Eigen::Map<Eigen::VectorXd> srcV(aMatrix.getData(),aMatrix.getDataSize());
|
||||||
double * ret = malloc(1);
|
double * ret = malloc(64);
|
||||||
ret[0] = srcV.array().mean();
|
ret[0] = srcV.array().mean();
|
||||||
return Matrix::New(ret,1);
|
return Matrix::New(ret,1);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -82,7 +82,7 @@ Matrix Aurora::zeros(int aRow, int aColumn, int aSlice) {
|
|||||||
double* data = malloc(arraySize);
|
double* data = malloc(arraySize);
|
||||||
double zero = 0.0;
|
double zero = 0.0;
|
||||||
cblas_dcopy(arraySize,&zero,0,data,1);
|
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) {
|
Matrix Aurora::zeros(int aSquareRow) {
|
||||||
|
|||||||
@@ -12,10 +12,6 @@
|
|||||||
#include "Function1D.h"
|
#include "Function1D.h"
|
||||||
#include "Function2D.h"
|
#include "Function2D.h"
|
||||||
#include "Function3D.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"
|
#include "MatlabReader.h"
|
||||||
|
|
||||||
int main() {
|
int main() {
|
||||||
@@ -23,7 +19,7 @@ int main() {
|
|||||||
Input i;
|
Input i;
|
||||||
MatchedFilter o;
|
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;
|
bool measuredCEused = true,findDefects = i.mParams->mFindDefects,removeOutliers = i.mRemoveOutliersFromCEMeasured;
|
||||||
|
|
||||||
Aurora::Matrix mFTime = Aurora::Matrix::fromRawData(i.mCe,4000,2304);
|
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];
|
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) {
|
for (int l = 0; l < indexe.getDataSize(); ++l) {
|
||||||
if ((bool)indexe.getData()[l]){
|
if ((bool)indexe.getData()[l]){
|
||||||
matchedFilter(Aurora::$,l) = matchedFilter(Aurora::$,minCol);
|
matchedFilter(Aurora::$,l) = matchedFilter(Aurora::$,minCol);
|
||||||
@@ -75,5 +71,6 @@ int main() {
|
|||||||
mFTime2 = mFTime2/repmat(sum(Aurora::abs(mFTime2)),mFTime2.getDimSize(0),1);
|
mFTime2 = mFTime2/repmat(sum(Aurora::abs(mFTime2)),mFTime2.getDimSize(0),1);
|
||||||
matchedFilter = fft(mFTime2);
|
matchedFilter = fft(mFTime2);
|
||||||
}
|
}
|
||||||
|
printf("run end\r\n");
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user