92 static int gcd(
int iA,
int iB);
102 static bool issparse(Eigen::VectorXd& v);
123 static double chi2Isf(
double p,
int dof);
138 static Eigen::MatrixXd
rescale(
const Eigen::MatrixXd& data,
139 const Eigen::RowVectorXf& times,
140 const QPair<float, float>& baseline,
156 static Eigen::MatrixXd
rescale(
const Eigen::MatrixXd& data,
157 const Eigen::RowVectorXf& times,
158 const std::pair<float, float>& baseline,
159 const std::string& mode);
170 static inline double log2(
const T d);
185 static void histcounts(
const Eigen::Matrix<T, Eigen::Dynamic, Eigen::Dynamic>& matRawData,
186 bool bMakeSymmetrical,
188 Eigen::VectorXd& vecResultClassLimits,
189 Eigen::VectorXi& vecResultFrequency,
190 double dGlobalMin = 0.0,
191 double dGlobalMax = 0.0);
194 static void histcounts(
const Eigen::Matrix<T, Eigen::Dynamic, 1>& matRawData,
195 bool bMakeSymmetrical,
197 Eigen::VectorXd& vecResultClassLimits,
198 Eigen::VectorXi& vecResultFrequency,
199 double dGlobalMin = 0.0,
200 double dGlobalMax = 0.0);
203 static void histcounts(
const Eigen::Matrix<T, 1, Eigen::Dynamic>& matRawData,
204 bool bMakeSymmetrical,
206 Eigen::VectorXd& vecResultClassLimits,
207 Eigen::VectorXi& vecResultFrequency,
208 double dGlobalMin = 0.0,
209 double dGlobalMax = 0.0);
226 bool bMakeSymmetrical,
228 Eigen::VectorXd& vecResultClassLimits,
229 Eigen::VectorXi& vecResultFrequency,
233 Eigen::Matrix<T, Eigen::Dynamic, Eigen::Dynamic> matrixName(matRawData.rows(), 1);
234 matrixName.col(0) = matRawData;
235 Numerics::histcounts(matrixName, bMakeSymmetrical, iClassAmount, vecResultClassLimits, vecResultFrequency, dGlobalMin, dGlobalMax);
242 bool bMakeSymmetrical,
244 Eigen::VectorXd& vecResultClassLimits,
245 Eigen::VectorXi& vecResultFrequency,
249 Eigen::Matrix<T, Eigen::Dynamic, Eigen::Dynamic> matrixName(1, matRawData.cols());
250 matrixName.row(0) = matRawData;
251 Numerics::histcounts(matrixName, bMakeSymmetrical, iClassAmount, vecResultClassLimits, vecResultFrequency, dGlobalMin, dGlobalMax);
258 bool bMakeSymmetrical,
260 Eigen::VectorXd& vecResultClassLimits,
261 Eigen::VectorXi& vecResultFrequency,
265 if (matRawData.rows() == 0 || matRawData.cols() == 0) {
269 vecResultClassLimits.resize(iClassAmount + 1);
270 vecResultFrequency.resize(iClassAmount);
272 for (
int count = 0; count < iClassAmount; ++count) {
273 vecResultFrequency(count) = 0;
283 rawMin = matRawData.minCoeff();
284 rawMax = matRawData.maxCoeff();
286 if (bMakeSymmetrical ==
true) {
287 if (std::fabs(rawMin) > rawMax) {
288 localMax = std::fabs(rawMin);
290 }
else if (rawMax > std::fabs(rawMin)) {
291 localMin = -(rawMax);
302 if (dGlobalMin == 0.0 && dGlobalMax == 0.0) {
303 desiredMin = localMin;
304 desiredMax = localMax;
305 vecResultClassLimits[0] = desiredMin;
306 vecResultClassLimits[iClassAmount] = desiredMax;
308 desiredMin = dGlobalMin;
309 desiredMax = dGlobalMax;
310 vecResultClassLimits(0) = desiredMin;
311 vecResultClassLimits(iClassAmount) = desiredMax;
314 double range = (vecResultClassLimits(iClassAmount) - vecResultClassLimits(0)),
315 dynamicUpperClassLimit;
317 for (
int kr = 0; kr < iClassAmount; ++kr) {
318 dynamicUpperClassLimit = (vecResultClassLimits(0) + (kr * (range / iClassAmount)));
319 vecResultClassLimits(kr) = dynamicUpperClassLimit;
322 for (
int ir = 0; ir < matRawData.rows(); ++ir) {
323 for (
int jr = 0; jr < matRawData.cols(); ++jr) {
324 if (matRawData(ir, jr) != 0.0) {
325 for (
int kr = 0; kr < iClassAmount; ++kr) {
326 if (kr == iClassAmount - 1) {
327 if (matRawData(ir, jr) >= vecResultClassLimits(kr) && matRawData(ir, jr) <= vecResultClassLimits(kr + 1)) {
328 vecResultFrequency(kr) = vecResultFrequency(kr) + 1;
331 if (matRawData(ir, jr) >= vecResultClassLimits(kr) && matRawData(ir, jr) < vecResultClassLimits(kr + 1)) {
332 vecResultFrequency(kr) = vecResultFrequency(kr) + 1;
static Eigen::MatrixXd rescale(const Eigen::MatrixXd &data, const Eigen::RowVectorXf ×, const std::pair< float, float > &baseline, const std::string &mode)
static void histcounts(const Eigen::Matrix< T, Eigen::Dynamic, Eigen::Dynamic > &matRawData, bool bMakeSymmetrical, int iClassAmount, Eigen::VectorXd &vecResultClassLimits, Eigen::VectorXi &vecResultFrequency, double dGlobalMin=0.0, double dGlobalMax=0.0)
static Eigen::MatrixXd rescale(const Eigen::MatrixXd &data, const Eigen::RowVectorXf ×, const QPair< float, float > &baseline, QString mode)