91 static int gcd(
int iA,
int iB);
101 static bool issparse(Eigen::VectorXd &v);
126 static Eigen::MatrixXd
rescale(
const Eigen::MatrixXd &data,
127 const Eigen::RowVectorXf ×,
128 const QPair<float, float> &baseline,
144 static Eigen::MatrixXd
rescale(
const Eigen::MatrixXd& data,
145 const Eigen::RowVectorXf& times,
146 const std::pair<float, float>& baseline,
147 const std::string& mode);
158 static inline double log2(
const T d);
173 static void histcounts(
const Eigen::Matrix<T, Eigen::Dynamic, Eigen::Dynamic>& matRawData,
174 bool bMakeSymmetrical,
176 Eigen::VectorXd& vecResultClassLimits,
177 Eigen::VectorXi& vecResultFrequency,
178 double dGlobalMin = 0.0,
179 double dGlobalMax = 0.0);
182 static void histcounts(
const Eigen::Matrix<T, Eigen::Dynamic, 1>& matRawData,
183 bool bMakeSymmetrical,
185 Eigen::VectorXd& vecResultClassLimits,
186 Eigen::VectorXi& vecResultFrequency,
187 double dGlobalMin = 0.0,
188 double dGlobalMax = 0.0);
191 static void histcounts(
const Eigen::Matrix<T, 1, Eigen::Dynamic>& matRawData,
192 bool bMakeSymmetrical,
194 Eigen::VectorXd& vecResultClassLimits,
195 Eigen::VectorXi& vecResultFrequency,
196 double dGlobalMin = 0.0,
197 double dGlobalMax = 0.0);
214 bool bMakeSymmetrical,
216 Eigen::VectorXd& vecResultClassLimits,
217 Eigen::VectorXi& vecResultFrequency,
221 Eigen::Matrix<T, Eigen::Dynamic, Eigen::Dynamic> matrixName(matRawData.rows(), 1);
222 matrixName.col(0) = matRawData;
223 Numerics::histcounts(matrixName, bMakeSymmetrical, iClassAmount, vecResultClassLimits, vecResultFrequency, dGlobalMin, dGlobalMax);
230 bool bMakeSymmetrical,
232 Eigen::VectorXd& vecResultClassLimits,
233 Eigen::VectorXi& vecResultFrequency,
237 Eigen::Matrix<T, Eigen::Dynamic, Eigen::Dynamic> matrixName(1, matRawData.cols());
238 matrixName.row(0) = matRawData;
239 Numerics::histcounts(matrixName, bMakeSymmetrical, iClassAmount, vecResultClassLimits, vecResultFrequency, dGlobalMin, dGlobalMax);
246 bool bMakeSymmetrical,
248 Eigen::VectorXd& vecResultClassLimits,
249 Eigen::VectorXi& vecResultFrequency,
253 if(matRawData.rows() == 0 || matRawData.cols() == 0) {
257 vecResultClassLimits.resize(iClassAmount + 1);
258 vecResultFrequency.resize(iClassAmount);
260 for (
int count = 0; count < iClassAmount; ++count)
262 vecResultFrequency(count) = 0;
272 rawMin = matRawData.minCoeff();
273 rawMax = matRawData.maxCoeff();
275 if (bMakeSymmetrical ==
true)
277 if (std::fabs(rawMin) > rawMax)
279 localMax = std::fabs(rawMin);
282 else if (rawMax > std::fabs(rawMin))
284 localMin = -(rawMax);
299 if (dGlobalMin == 0.0 && dGlobalMax == 0.0)
301 desiredMin = localMin;
302 desiredMax = localMax;
303 vecResultClassLimits[0] = desiredMin;
304 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)
319 dynamicUpperClassLimit = (vecResultClassLimits(0) + (kr * (range / iClassAmount)));
320 vecResultClassLimits(kr) = dynamicUpperClassLimit;
323 for (
int ir = 0; ir < matRawData.rows(); ++ir)
325 for (
int jr = 0; jr < matRawData.cols(); ++jr)
327 if(matRawData(ir,jr) != 0.0) {
328 for (
int kr = 0; kr < iClassAmount; ++kr)
330 if (kr == iClassAmount - 1)
332 if (matRawData(ir,jr) >= vecResultClassLimits(kr) && matRawData(ir,jr) <= vecResultClassLimits(kr + 1))
334 vecResultFrequency(kr) = vecResultFrequency(kr) + 1;
339 if (matRawData(ir,jr) >= vecResultClassLimits(kr) && matRawData(ir,jr) < vecResultClassLimits(kr + 1))
341 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)