90 static int gcd(
int iA,
int iB);
100 static bool issparse(Eigen::VectorXd &v);
125 static Eigen::MatrixXd
rescale(
const Eigen::MatrixXd &data,
126 const Eigen::RowVectorXf ×,
127 const QPair<float, float> &baseline,
143 static Eigen::MatrixXd
rescale(
const Eigen::MatrixXd& data,
144 const Eigen::RowVectorXf& times,
145 const std::pair<float, float>& baseline,
146 const std::string& mode);
157 static inline double log2(
const T d);
172 static void histcounts(
const Eigen::Matrix<T, Eigen::Dynamic, Eigen::Dynamic>& matRawData,
173 bool bMakeSymmetrical,
175 Eigen::VectorXd& vecResultClassLimits,
176 Eigen::VectorXi& vecResultFrequency,
177 double dGlobalMin = 0.0,
178 double dGlobalMax = 0.0);
181 static void histcounts(
const Eigen::Matrix<T, Eigen::Dynamic, 1>& matRawData,
182 bool bMakeSymmetrical,
184 Eigen::VectorXd& vecResultClassLimits,
185 Eigen::VectorXi& vecResultFrequency,
186 double dGlobalMin = 0.0,
187 double dGlobalMax = 0.0);
190 static void histcounts(
const Eigen::Matrix<T, 1, Eigen::Dynamic>& matRawData,
191 bool bMakeSymmetrical,
193 Eigen::VectorXd& vecResultClassLimits,
194 Eigen::VectorXi& vecResultFrequency,
195 double dGlobalMin = 0.0,
196 double dGlobalMax = 0.0);
213 bool bMakeSymmetrical,
215 Eigen::VectorXd& vecResultClassLimits,
216 Eigen::VectorXi& vecResultFrequency,
220 Eigen::Matrix<T, Eigen::Dynamic, Eigen::Dynamic> matrixName(matRawData.rows(), 1);
221 matrixName.col(0) = matRawData;
222 Numerics::histcounts(matrixName, bMakeSymmetrical, iClassAmount, vecResultClassLimits, vecResultFrequency, dGlobalMin, dGlobalMax);
229 bool bMakeSymmetrical,
231 Eigen::VectorXd& vecResultClassLimits,
232 Eigen::VectorXi& vecResultFrequency,
236 Eigen::Matrix<T, Eigen::Dynamic, Eigen::Dynamic> matrixName(1, matRawData.cols());
237 matrixName.row(0) = matRawData;
238 Numerics::histcounts(matrixName, bMakeSymmetrical, iClassAmount, vecResultClassLimits, vecResultFrequency, dGlobalMin, dGlobalMax);
245 bool bMakeSymmetrical,
247 Eigen::VectorXd& vecResultClassLimits,
248 Eigen::VectorXi& vecResultFrequency,
252 if(matRawData.rows() == 0 || matRawData.cols() == 0) {
256 vecResultClassLimits.resize(iClassAmount + 1);
257 vecResultFrequency.resize(iClassAmount);
259 for (
int count = 0; count < iClassAmount; ++count)
261 vecResultFrequency(count) = 0;
271 rawMin = matRawData.minCoeff();
272 rawMax = matRawData.maxCoeff();
274 if (bMakeSymmetrical ==
true)
276 if (std::fabs(rawMin) > rawMax)
278 localMax = std::fabs(rawMin);
281 else if (rawMax > std::fabs(rawMin))
283 localMin = -(rawMax);
298 if (dGlobalMin == 0.0 && dGlobalMax == 0.0)
300 desiredMin = localMin;
301 desiredMax = localMax;
302 vecResultClassLimits[0] = desiredMin;
303 vecResultClassLimits[iClassAmount] = desiredMax;
307 desiredMin = dGlobalMin;
308 desiredMax = dGlobalMax;
309 vecResultClassLimits(0) = desiredMin;
310 vecResultClassLimits(iClassAmount) = desiredMax;
313 double range = (vecResultClassLimits(iClassAmount) - vecResultClassLimits(0)),
314 dynamicUpperClassLimit;
316 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)
324 for (
int jr = 0; jr < matRawData.cols(); ++jr)
326 if(matRawData(ir,jr) != 0.0) {
327 for (
int kr = 0; kr < iClassAmount; ++kr)
329 if (kr == iClassAmount - 1)
331 if (matRawData(ir,jr) >= vecResultClassLimits(kr) && matRawData(ir,jr) <= vecResultClassLimits(kr + 1))
333 vecResultFrequency(kr) = vecResultFrequency(kr) + 1;
338 if (matRawData(ir,jr) >= vecResultClassLimits(kr) && matRawData(ir,jr) < vecResultClassLimits(kr + 1))
340 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)