[pktools] 190/375: error in hist in StatFactory
Bas Couwenberg
sebastic at xs4all.nl
Wed Dec 3 21:54:13 UTC 2014
This is an automated email from the git hooks/post-receive script.
sebastic-guest pushed a commit to branch upstream-master
in repository pktools.
commit 3d78193d2900fe4613449e1231c54d6b86fb88f2
Author: Default Seadas User <seadas-user at localhost>
Date: Tue Feb 25 17:30:35 2014 +0100
error in hist in StatFactory
---
src/algorithms/StatFactory.h | 2 +-
src/apps/pkstatascii.cc | 56 +-------------------------------------------
2 files changed, 2 insertions(+), 56 deletions(-)
diff --git a/src/algorithms/StatFactory.h b/src/algorithms/StatFactory.h
index e59b192..b8e3e3d 100644
--- a/src/algorithms/StatFactory.h
+++ b/src/algorithms/StatFactory.h
@@ -619,7 +619,7 @@ template<class T> void StatFactory::distribution(const std::vector<T>& input, t
if(*it==maximum)
theBin=nbin-1;
else if(*it>minimum && *it<maximum)
- theBin=static_cast<int>(static_cast<double>((nbin-1)*(*it)-minimum)/(maximum-minimum));
+ theBin=static_cast<int>(static_cast<double>((nbin-1)*(*it-minimum)/(maximum-minimum)));
++output[theBin];
// if(*it==maximum)
// ++output[nbin-1];
diff --git a/src/apps/pkstatascii.cc b/src/apps/pkstatascii.cc
index 787607e..fd9c832 100644
--- a/src/apps/pkstatascii.cc
+++ b/src/apps/pkstatascii.cc
@@ -201,6 +201,7 @@ int main(int argc, char *argv[])
cout << "min value column " << col_opt[icol] << ": " << stat.min(dataVector[icol]) << endl;
if(max_opt[0])
cout << "max value column " << col_opt[icol] << ": " << stat.max(dataVector[icol]) << endl;
+
if(histogram_opt[0]){
//todo: support kernel density function and estimate sigma as in practical estimate of the bandwith in http://en.wikipedia.org/wiki/Kernel_density_estimation
double sigma=0;
@@ -217,62 +218,8 @@ int main(int argc, char *argv[])
else
std::cout << "calculating histogram for col " << icol << std::endl;
}
- //test
- // cout << "debug0" << endl;
- // cout << "dataVector.size(): " << dataVector.size() << endl;
- // cout << "statVector.size(): " << statVector.size() << endl;
-
- // double theMinValue=0;
- // double theMaxValue=0;
-
- // stat.minmax(dataVector[icol],dataVector[icol].begin(),dataVector[icol].end(),theMinValue,theMaxValue);
- // if(minValue<maxValue&&minValue>theMinValue)
- // theMinValue=minValue;
- // if(minValue<maxValue&&maxValue<theMaxValue)
- // theMaxValue=maxValue;
-
- // //todo: check...
- // minValue=theMinValue;
- // maxValue=theMaxValue;
-
- // if(maxValue<=minValue){
- // std::ostringstream s;
- // s<<"Error: could not calculate distribution (min>=max)";
- // throw(s.str());
- // }
- // assert(nbin);
- // assert(dataVector[icol].size());
- // if(statVector[icol].size()!=nbin){
- // statVector[icol].resize(nbin);
- // for(int i=0;i<nbin;statVector[icol][i++]=0);
- // }
- // typename std::vector<double>::const_iterator it;
- // for(it=dataVector[icol].begin();it!=dataVector[icol].end();++it){
- // if(*it<minValue)
- // continue;
- // if(*it>maxValue)
- // continue;
- // if(stat.isNoData(*it))
- // continue;
- // int theBin=0;
- // if(*it==maxValue)
- // theBin=nbin-1;
- // else if(*it>minValue && *it<maxValue)
- // theBin=static_cast<int>(static_cast<double>((nbin-1)*(*it)-minValue)/(maxValue-minValue));
- // assert(theBin<statVector[icol].size());
- // ++statVector[icol][theBin];
- // // if(*it==maxValue)
- // // ++statVector[icol][nbin-1];
- // // else if(*it>=minValue && *it<maxValue)
- // // ++statVector[icol][static_cast<int>(static_cast<double>((*it)-minValue)/(maxValue-minValue)*nbin)];
- // }
- // exit(0);
- //end test
-
stat.distribution(dataVector[icol],dataVector[icol].begin(),dataVector[icol].end(),statVector[icol],nbin,minValue,maxValue,sigma);
- //test
- cout << "debug1" << endl;
if(verbose_opt[0])
std::cout << "min and max values: " << minValue << ", " << maxValue << std::endl;
}
@@ -300,7 +247,6 @@ int main(int argc, char *argv[])
else
binValue=minValue+static_cast<double>(maxValue-minValue)*(irow+0.5)/nbin;
std::cout << binValue << " ";
- // std::cout << minValue+static_cast<double>(maxValue-minValue)*(irow+0.5)/nbin << " ";
for(int icol=0;icol<col_opt.size();++icol){
if(relative_opt[0])
std::cout << 100.0*static_cast<double>(statVector[icol][irow])/static_cast<double>(dataVector[icol].size());
--
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/pkg-grass/pktools.git
More information about the Pkg-grass-devel
mailing list