Home | Develop | Download | Contact
Matrix.hpp
1 /*
2  * Matrix.hpp
3  *
4  * Copyright 2011 Fernando Pujaico Rivera <fernando.pujaico.rivera@gmail.com>
5  *
6  * This program is free software; you can redistribute it and/or modify
7  * it under the terms of the GNU General Public License as published by
8  * the Free Software Foundation; either version 2 of the License, or
9  * (at your option) any later version.
10  *
11  * This program is distributed in the hope that it will be useful,
12  * but WITHOUT ANY WARRANTY; without even the implied warranty of
13  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14  * GNU General Public License for more details.
15  *
16  * You should have received a copy of the GNU General Public License
17  * along with this program; if not, write to the Free Software
18  * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
19  * MA 02110-1301, USA.
20  *
21  */
22 
33 #ifndef __PDS_MATRIX_HPP__
34 #define __PDS_MATRIX_HPP__
35 
36 
63 #include <string>
64 #include <list>
65 #include <vector>
66 #include <Pds/Size>
67 #include <Pds/RaDefines>
68 #include <Pds/RegionRect>
69 #include <Pds/Array>
70 
71 #include <iostream>
72 #include <fstream>
73 
74 namespace Pds{
75 
76 class Vector;
77 
85 class Matrix
86 {
87 private:
89  double **array;
91  unsigned int nlin;
93  unsigned int ncol;
94 
95  friend class CMatrix;
96  friend class CVector;
97  friend class Vector;
98  friend class Array<double>;
99  friend class Array<unsigned int>;
100  friend class Array<unsigned char>;
101 public:
102 
121  Matrix(void);
122 
148  Matrix(unsigned int N);
149 
175  Matrix(const Pds::Size &S);
176 
197  Matrix(const Pds::Matrix &B);
198 
199 
212  template <class Datum>
214 
215 
229  Matrix(const char *str);
230 
245  Matrix(const std::string &str);
246 
272  Matrix(unsigned int Nlin,unsigned int Ncol);
273 
300  Matrix(unsigned int Nlin,unsigned int Ncol,double val);
301 
323  Matrix(double (*func)(double),const Pds::Matrix &B );
324 
347  Matrix(double (*func)(double,double),const Pds::Matrix &B , double var);
348 
349 
377  Matrix(double (*func)(double,double),const Pds::Matrix &B ,const Pds::Matrix &C);
378 
379 
409  Matrix(double (*func)(double,double,double),const Pds::Matrix &B ,const Pds::Matrix &C, double var);
410 
440  Matrix(double (*func)(double,double,double),
441  const Pds::Matrix &X,
442  const Pds::Matrix &Y,
443  const Pds::Matrix &Z);
444 
476  Matrix(double (*func)(double,double,double,double),
477  const Pds::Matrix &X,
478  const Pds::Matrix &Y,
479  const Pds::Matrix &Z,
480  double var);
481 
513  Matrix(double (*func)(double,double,double,double),
514  const Pds::Matrix &X,
515  const Pds::Matrix &Y,
516  const Pds::Matrix &Z,
517  const Pds::Matrix &W);
518 
535  Matrix(Pds::Ra::FormatType Type,std::string filepath);
536 
538 
543 public:
544 
556  bool IsEmpty(void) const;
557 
564  bool IsNotEmpty(void) const;
565 
566 
575  bool IsSimilarTo(const Pds::Matrix &B) const;
576 
585  bool IsNotSimilarTo(const Pds::Matrix &B) const;
586 
595  bool IsMulBy(const Pds::Matrix &B) const;
596 
605  bool IsNotMulBy(const Pds::Matrix &B) const;
606 
617  bool IsInRange(unsigned int lin,unsigned int col) const;
618 
629  bool IsNotInRange(unsigned int lin,unsigned int col) const;
630 
641  bool IsInSizeRange(double lin,double col) const;
642 
643 
651  bool IsRowMatrix(void) const;
652 
653 
661  bool IsColMatrix(void) const;
662 
679  bool IsZero(void) const;
680 
690  bool IsLeq(double val) const;
691 
701  bool IsLeq(const Pds::Matrix &B) const;
702 
712  bool IsGeq(double val) const;
713 
723  bool IsGeq(const Pds::Matrix &B) const;
724 
734  bool IsEqualTo(double val) const;
735 
745  bool IsEqualTo(const Pds::Matrix &B) const;
746 
761  bool HasInf(void) const;
762 
777  bool HasNan(void) const;
778 
779 
793  bool HasNotFinite(void) const;
794 
795 
800 public:
801 
818  bool FillRandC(double p1);
819 
832  bool FillRandN(void);
833 
848  bool FillRandN(double U, double Sigma);
849 
862  bool FillRandU(void);
863 
878  bool FillRandU(int a, int b);
879 
894  bool FillRandU(double a, double b);
895 
910  bool FillId(void );
911 
927  bool Fill(double val);
928 
947  bool FillLinSpace(double a,double b);
952 public:
953 
963  unsigned int Nlin(void) const;
964 
969  unsigned int Ncol(void) const;
970 
975  unsigned int Nel(void) const;
976 
981  Pds::Size Size(void) const;
982 
987  unsigned int LinEnd(void) const;
988 
993  unsigned int ColEnd(void) const;
994 
999  unsigned int End(void) const;
1000 
1001 
1006 public:
1007 
1022  double Get(unsigned int id) const;
1023 
1032  double Get(unsigned int lin,unsigned int col) const;
1033 
1034 
1043  const double &GetRaw(unsigned int lin,unsigned int col) const
1044  {
1045  return this->array[lin][col];
1046  }
1047 
1048 
1057  void SetRaw(unsigned int lin,unsigned int col,const double &val)
1058  {
1059  this->array[lin][col]=val;
1060  }
1061 
1070  bool Set(unsigned int id,double val);
1071 
1081  bool Set(unsigned int lin,unsigned int col,double val);
1082 
1091  double &At(unsigned int lin,unsigned int col);
1092 
1100  double &At(unsigned int id);
1101 
1102 
1114  double Bilinear(double lin,double col) const;
1115 
1120 public:
1121 
1133 
1142  bool SetDiagonal(const Pds::Vector V);
1143 
1144 
1155  Pds::Matrix GetMatrix(unsigned int lin_init,unsigned int col_init,unsigned int lin_end,unsigned int col_end) const;
1156 
1166  Pds::Matrix GetMatrix(unsigned int lin_init,unsigned int col_init,Pds::Size size) const;
1167 
1178  bool SetMatrix(unsigned int lin,unsigned int col,const Pds::Matrix &B);
1179 
1180 
1187  Pds::Matrix GetRow(unsigned int lin) const;
1188 
1195  Pds::Matrix GetCol(unsigned int col) const;
1196 
1205  Pds::Matrix GetRows(unsigned int lin_init,unsigned int lin_end) const;
1206 
1215  Pds::Matrix GetCols(unsigned int col_init,unsigned int col_end) const;
1216 
1223  Pds::Matrix GetRows(std::list<unsigned int> List) const;
1224 
1231  Pds::Matrix GetCols(std::list<unsigned int> List) const;
1232 
1239  Pds::Matrix GetRows(std::vector<unsigned int> Vec) const;
1240 
1247  Pds::Matrix GetCols(std::vector<unsigned int> Vec) const;
1248 
1249 
1258  Pds::Matrix GetRowsRand(unsigned int N) const;
1259 
1268  Pds::Matrix GetColsRand(unsigned int N) const;
1269 
1277  bool SetRowValue(unsigned int lin,double value);
1278 
1286  bool SetRowVector(unsigned int lin,const Pds::Vector &X);
1287 
1295  bool SetColValue(unsigned int col,double value);
1296 
1303  Pds::Vector GetRowAsColVector(unsigned int lin) const;
1304 
1312  bool GetRowAsColVector(unsigned int lin,Pds::Vector &V) const;
1313 
1320  Pds::Vector GetColVector(unsigned int col) const;
1321 
1331  bool SetColVector(unsigned int col,const Pds::Vector V);
1332 
1344  bool SetColVector(unsigned int col,double (*func)(double),const Pds::Vector V);
1345 
1358  bool SetColVector(unsigned int col,double (*func)(double,double),const Pds::Vector V,double var);
1359 
1365 public:
1366 
1382  bool RowAddAssig(unsigned int lin1,unsigned int lin2,double alpha);
1383 
1392  bool RowMulAssig(unsigned int lin,double alpha);
1393 
1402  bool RowDivAssig(unsigned int lin,double alpha);
1403 
1410  bool RowSwap(unsigned int lin1,unsigned int lin2);
1411 
1422  int RowSwapBelow(unsigned int n);
1423 
1431  bool RowReduction(void);
1432 
1433 
1441  bool RowDivByAbsMax(void);
1442 
1443 
1449 public:
1450 
1461  double Sum(void) const;
1462 
1469  double Mean(void) const;
1470 
1471 
1479 
1480 
1487 
1488 
1495  double Std(double *mean=NULL) const;
1496 
1502  Pds::Vector StdInRows(void) const;
1503 
1515 
1516 
1528 
1535  double Var(double *mean=NULL) const;
1536 
1537 
1545  double Max(unsigned int *id=NULL) const;
1546 
1554  double MaxAbs(unsigned int *id=NULL) const;
1555 
1556 
1563 
1564 
1572  double Min(unsigned int *id=NULL) const;
1573 
1581  double MinAbs(unsigned int *id=NULL) const;
1582 
1583 
1584 
1592  Pds::Matrix MinInCols(std::vector<unsigned int> &Lin) const;
1593 
1602 
1603 
1619 
1635 
1651  double Accuracy(const Pds::Matrix &B,double Umbral) const;
1652 
1662  double R2(const Pds::Matrix &Y) const;
1663 
1674  double Rf(const Pds::Matrix &Y) const;
1675 
1685  double Mape(const Pds::Matrix &B) const;
1691 public:
1692 
1711  double InformationGain(const std::vector<Pds::Matrix> &A,double Umbral=0.5) const;
1712 
1721  double BinaryEntropy(double umbral) const;
1722 
1731  double P1Probability(double umbral) const;
1732 
1740  Pds::Matrix BalancedBinaryWeight(double umbral) const;
1741 
1742 
1748 public:
1749 
1766  Pds::Vector HistogramNorm(int min=0,int max=255) const;
1767 
1774  double Corr(const Pds::Matrix &B) const;
1775 
1832  Pds::Matrix XCorr(const Pds::Matrix &B, bool Same=false) const;
1833 
1834 
1854  Pds::Matrix FilterMean(unsigned int r) const;
1855 
1856 
1874 
1875 
1893 
1909  Pds::Matrix Resize(double factor) const;
1910 
1916 public:
1917 
1930  double Det(void) const;
1931 
1940  double Dot(const Pds::Matrix &B) const;
1941 
1949  double Rms(void) const;
1950 
1951 
1959  double MeanAbsolute(void) const;
1960 
1968  double MeanSquare(void) const;
1969 
1977  double SumSquare(void) const;
1978 
1986  double Norm(void) const;
1987 
1988 
1996  double PNorm1(void) const;
1997 
1998 
2006  double PNormInf(void) const;
2007 
2024 public:
2025 
2037  std::vector<unsigned int> Find(void) const;
2038 
2048 
2058  Pds::Matrix FindRows(const Pds::Vector &B,double b) const;
2059 
2068  std::vector<Pds::Matrix> FindRowsBlock(const Pds::Vector &B)const;
2069 
2075 public:
2076 
2089  bool Apply( double (*func)(double) );
2090 
2100  bool Apply( double (*func)(double),const Pds::Matrix &B);
2101 
2110  bool Apply( double (*func)(double,double), double var);
2111 
2122  bool ApplySub( double (*func)(double),const Pds::Matrix &B,const Pds::Matrix &C);
2123 
2133  bool ApplySub(const Pds::Matrix &B,const Pds::Matrix &C);
2134 
2141  bool ApplyInCol(unsigned int col, double (*func)(double) );
2142 
2150  bool ApplyInCol(unsigned int col, double (*func)(double,double), double var);
2151 
2152 
2158 public:
2159 
2170  Pds::Matrix OperateRows(double (*func)(const Pds::Matrix &Row)) const;
2171 
2177  Pds::Matrix OperateCols(double (*func)(const Pds::Matrix &Col)) const;
2178 
2179 
2187  Pds::Matrix Scale(double minval,double maxval) const;
2188 
2195  Pds::Matrix Round(unsigned int decimal=0) const;
2200 public:
2201 
2218  bool CopyRegion(const Pds::RegionRect &Rin,const Pds::RegionRect &Rout,Pds::Matrix &Mout) const;
2219 
2226  bool InitRegion(Pds::RegionRect R,double val);
2227 
2233 
2250  bool MeanOfRegion(const Pds::RegionRect &Rin, double *mean) const;
2251 
2267  double MeanOfRegion(const Pds::RegionRect &Rin) const;
2268 
2285  bool MeanSquareOfRegion(const Pds::RegionRect &Rin, double *mean) const;
2286 
2302  double MeanSquareOfRegion(const Pds::RegionRect &Rin) const;
2303 
2321  bool StdAndMeanOfRegion(const Pds::RegionRect &Rin, double *std, double *mean) const;
2322 
2323 
2342  bool CorrNormRegions( const Pds::Matrix &M1,
2343  const Pds::RegionRect &R0,
2344  const Pds::RegionRect &R1,
2345  double *corrn) const;
2346 
2367  bool CorrNormRegions( const Pds::Matrix &M1,
2368  const Pds::RegionRect &R0,
2369  const Pds::RegionRect &R1,
2370  double means0,
2371  double means1,
2372  double *corrn) const;
2373 
2407  const Pds::RegionRect &R0,
2408  const Pds::RegionRect &R1,
2409  double *pcc) const;
2410 
2448  const Pds::RegionRect &R0,
2449  const Pds::RegionRect &R1,
2450  double mean0,
2451  double mean1,
2452  double std0,
2453  double std1,
2454  double *pcc) const;
2459 public:
2460 
2471  std::string ToString(void) const;
2472 
2473 
2479  void Print(std::string str) const;
2480 
2484  void Print(void) const;
2485 
2490 public:
2491 
2504  void MakeEmpty(void);
2505 
2513  bool Reshape(unsigned int Nlin,unsigned int Ncol);
2514 
2515 
2525  bool FusionVer(std::list<Pds::Matrix> &list);
2526 
2527 
2533 public:
2534 
2545  bool SaveInStream(std::ofstream &myfile) const;
2546 
2556  bool LoadFromStream(std::ifstream &ifs,unsigned int Nlin,unsigned int Ncol);
2557 
2565  bool LoadLineFromStream(std::ifstream &ifs);
2566 
2572  bool Save(const std::string &filepath) const;
2573 
2581  bool Load(const std::string &filepath);
2582 
2590  bool ExportCsvFile(const std::string &filepath,char delimitador=',') const;
2591 
2592 
2601  bool ExportCsvFile(const std::string &filepath,std::vector<std::string> titles,char delimitador=',') const;
2602 
2621  bool ExportMatFile(const std::string &pname,const std::string &filepath) const;
2622 
2632  bool ExportBmpFile(const unsigned char colormap[256][3],const std::string &filepath) const;
2638 public:
2639 
2652  static Pds::Matrix GetSamples(const std::vector<Pds::Matrix> &Block);
2653 
2662  static Pds::Matrix GetSamples(const std::vector<Pds::Matrix> &Block,const std::vector<unsigned int> Id);
2663 
2669  static Pds::Matrix FromString(const std::string &str);
2670 
2681  static bool ExportBmpFile( const Pds::Matrix &R,
2682  const Pds::Matrix &G,
2683  const Pds::Matrix &B,
2684  const std::string &bmpfilename);
2685 
2699  static std::vector<Pds::Matrix> ImportBmpFile( const std::string &bmpfilename);
2700 
2710  static Pds::Matrix MeanBlock( const std::vector<Pds::Matrix> &Block);
2716 public:
2717 
2741  Pds::Matrix T(void) const;
2742 
2760  Pds::Matrix MtM(void) const;
2761 
2762 
2779  Pds::Matrix Inv(double *rcond=NULL) const;
2780 
2798  Pds::Matrix PInv(double *rcond=NULL) const;
2799 
2800 
2820 
2839  Pds::Matrix Minus(void) const;
2840 
2860 
2879  Pds::Matrix Plus(void) const;
2911  Pds::Matrix operator * (double b) const;
2912 
2936 
2956  Pds::Matrix Mul(double b) const;
2957 
2979  Pds::Matrix Mul(const Pds::Matrix &B) const;
2980 
3002  Pds::Matrix Mul(const Pds::Vector &B) const;
3003 
3026  Pds::Matrix MulComp(double b,const Pds::Vector &B) const;
3027 
3051  bool MulComp(double b,const Pds::Vector &B, Pds::Vector &Out) const;
3052 
3074  Pds::Matrix MulT(const Pds::Matrix &B) const;
3075 
3097  Pds::Matrix TMul(const Pds::Matrix &B) const;
3098 
3099 
3121  Pds::Matrix operator + (double b) const;
3122 
3147 
3168  Pds::Matrix Add(double b) const;
3169 
3192  Pds::Matrix Add(const Pds::Matrix &B) const;
3193 
3194 
3216  Pds::Matrix operator - (double b) const;
3217 
3240 
3261  Pds::Matrix Sub(double b) const;
3262 
3284  Pds::Matrix Sub(const Pds::Matrix &B) const;
3285 
3286 
3310 
3334 
3355  Pds::Matrix operator / (double b) const;
3356 
3357 
3380 
3400  Pds::Matrix Div(double b) const;
3401 
3423  Pds::Matrix Div(const Pds::Matrix &B) const;
3424 
3425 
3445  Pds::Matrix DivBelow(double b) const;
3446 
3481 
3504 
3528  Pds::Matrix Product(double (*func)(double),const Pds::Matrix &B) const;
3529 
3548  bool ProductSelf(double b);
3549 
3570  bool ProductSelf(const Pds::Matrix &B);
3571 
3593  bool ProductSelf(double (*func)(double),const Pds::Matrix &B);
3594 
3616  bool ProductSelfMinus(double b, const Pds::Matrix &B);
3617 
3618 
3640  bool ProductSelfMinus(const Pds::Matrix &B,double b);
3641 
3663  bool ProductSelfPlus(double b, const Pds::Matrix &B);
3664 
3686  Pds::Matrix Pow(const Pds::Matrix &B) const;
3687 
3688 
3709  Pds::Matrix Pow(double val) const;
3710 
3730  Pds::Matrix Geq(double b) const;
3731 
3752 
3772  Pds::Matrix Leq(double b) const;
3773 
3793  Pds::Matrix Leq(const Pds::Matrix &B) const;
3794 
3795 
3815  Pds::Matrix EqualTo(double b) const;
3816 
3837 
3857  Pds::Matrix NotEqualTo(double b) const;
3858 
3879 
3880 
3903 
3926 
3948 
3976 
3994 
4009  bool SubAssig(double b);
4010 
4026  bool SubAssig(const Pds::Matrix &B);
4027 
4044 
4062 
4076  bool AddAssig(double b);
4077 
4093  bool AddAssig(const Pds::Matrix &B);
4094 
4111  bool AddAssig(double alpha, const Pds::Matrix &B);
4112 
4133  bool AddAssig(double alpha, const Pds::Matrix &B, double beta, const Pds::Matrix &C);
4134 
4153  bool AddAssigAt(unsigned int lin,unsigned int col,const Pds::Matrix &B);
4154 
4171 
4188 
4202  bool MulAssig(double b);
4203 
4218  bool MulAssig(const Pds::Matrix &B);
4219 
4220 
4221 
4244 
4257  bool Copy(const Pds::Matrix &B);
4258 
4259 
4260 
4282  Pds::Matrix& operator = (double val);
4283 
4296  bool Copy(double val);
4297 
4316  template <class Datum>
4318 
4330  template <class Datum>
4331  bool Copy(const Pds::Array<Datum> &B);
4332 
4333 
4362 
4380  Pds::Matrix MultipleMse(const std::vector<Pds::Matrix> &Block) const;
4381 
4396 
4410  Pds::Array<unsigned int> IdInMultipleMse(const std::vector<Pds::Matrix> &Block) const;
4411 
4412 
4418 public:
4419 
4432  static double** ArrayAllocate(double (*func)(double),const Pds::Matrix &A);
4433 
4443  static double** ArrayAllocate(double (*func)(double,double),const Pds::Matrix &A,double var);
4444 
4455  static double** ArrayAllocate(double (*func)(double,double),const Pds::Matrix &A,const Pds::Matrix &B);
4456 
4468  static double** ArrayAllocate(double (*func)(double,double,double),const Pds::Matrix &A,const Pds::Matrix &B,double var);
4469 
4481  static double** ArrayAllocate(double (*func)(double,double,double),
4482  const Pds::Matrix &A,
4483  const Pds::Matrix &B,
4484  const Pds::Matrix &C);
4485 
4498  static double** ArrayAllocate(double (*func)(double,double,double,double),
4499  const Pds::Matrix &A,
4500  const Pds::Matrix &B,
4501  const Pds::Matrix &C,
4502  double var);
4503 
4516  static double** ArrayAllocate(double (*func)(double,double,double,double),
4517  const Pds::Matrix &A,
4518  const Pds::Matrix &B,
4519  const Pds::Matrix &C,
4520  const Pds::Matrix &D);
4521 
4527 };// class Matrix
4528 
4529 } // namespace Pds
4530 
4531 
4532 
4533 
4553 std::ostream& operator<<(std::ostream &out,const Pds::Matrix &mat);
4554 
4577 Pds::Matrix operator+(double b,const Pds::Matrix &A);
4578 
4601 Pds::Matrix operator-(double b,const Pds::Matrix &A);
4602 
4625 Pds::Matrix operator*(double b,const Pds::Matrix &A);
4626 
4649 Pds::Matrix operator/(double b,const Pds::Matrix &A);
4650 
4659 #endif
4660 
La clase tipo Array . Esta clase genera una agrupación de 2 datos. Para usar incluir Pds/Array.
Definition: Array.hpp:68
La clase tipo Pds::Matrix . Esta clase genera una matriz de Nlin lineas y Ncol columnas....
Definition: Matrix.hpp:86
unsigned int nlin
Definition: Matrix.hpp:91
friend class CMatrix
Definition: Matrix.hpp:95
double ** array
Definition: Matrix.hpp:89
friend class CVector
Definition: Matrix.hpp:96
unsigned int ncol
Definition: Matrix.hpp:93
La estructura tipo Pds::RegionRect . Esta estructura genera una region. Para usar incluir <Pds/Region...
Definition: RegionRect.hpp:64
La clase tipo Pds::Size . Esta clase genera un objeto con dos parametros Nlin y Ncol....
Definition: Size.hpp:58
La clase tipo Pds::Vector . Esta clase genera una matriz de Nlin lineas y 1 columna....
Definition: Vector.hpp:78
FormatType
Tipo de dato en la carga de información desde archivo.
Definition: RaDefines.hpp:150
bool IsEqualTo(const Pds::Matrix &B) const
Verifica si cada elemento de la matriz es igual a cada elemento de la matriz B.
Pds::Matrix Product(double(*func)(double), const Pds::Matrix &B) const
[Elemento a elemento] Multiplica con sigo mismo (A), elemento a elemento, una matriz func(B) y el res...
bool ProductSelfMinus(const Pds::Matrix &B, double b)
[Elemento a elemento] Multiplica con sigo mismo (A), elemento a elemento, una matriz (B-b) y el resul...
Pds::Matrix FilterMean3b(void) const
Procesa la matriz A usando un filtro mean de radio 1.
Matrix(unsigned int N)
Crea un objeto de tipo Pds::Matrix de N lineas y N columnas, con elementos inicializados con cero.
bool SetRowValue(unsigned int lin, double value)
Copia un valor en una linea de la matriz.
Pds::Matrix Mul(const Pds::Matrix &B) const
Multiplica con sigo mismo (A), una matriz B y el resultado es cargado en C. Este método es similar al...
bool FillLinSpace(double a, double b)
Inicializa la matriz con un espacio linear entre begin y end. Se inicializa primero una columna ante ...
static double ** ArrayAllocate(double(*func)(double, double, double, double), const Pds::Matrix &A, const Pds::Matrix &B, const Pds::Matrix &C, const Pds::Matrix &D)
crea dinámicamente un arreglo de A.Nlin() lineas y A.Ncol() columnas, con los datos copiados de aplic...
Pds::Matrix MulT(const Pds::Matrix &B) const
Multiplica con sigo mismo (A), la transpuesta de una matriz B y el resultado es cargado en C....
Pds::Matrix & operator-=(double b)
Resta y acumula en si mismo (A), un valor b. Este operador es similar al método SubAssig()
bool IsNotEmpty(void) const
Verifica si la matriz NO es nula, es decir con lineas y columnas diferentes cero y arreglo diferente ...
Pds::Matrix Resize(double factor) const
Retorna una matriz B (size: NlinB,NcolB) resultado de aplicar un subsampling de la matriz A (size: Nl...
bool Set(unsigned int lin, unsigned int col, double val)
Escribe el valor en la posición (lin,col), hace una verificación si la posición existe.
void MakeEmpty(void)
libera los datos internos de la matriz y la convierte en una matriz nula. es decir con lineas y colum...
Matrix(const Pds::Array< Datum > &B)
Crea un objeto de tipo Pds::Matrix copiando datos desde un arreglo.
bool Load(const std::string &filepath)
Lee de un archivo una matriz de Nlin lineas y Ncol columnas. Si la lectura es satisfactoria el conten...
bool ExportMatFile(const std::string &pname, const std::string &filepath) const
Escribe en un archivo binario en formato de octave la matriz. Es necesario dar un nombre como identif...
double MaxAbs(unsigned int *id=NULL) const
Calcula el máximo valor del valor absoluto de la matriz.
double BinaryEntropy(double umbral) const
Calcula la entropia binaria de la estadistica de {p0,p1}, la probabilidade de unos y ceros en la matr...
Pds::Matrix GetMatrix(unsigned int lin_init, unsigned int col_init, Pds::Size size) const
Retorna una sub matriz desde la posición (lin_init,col_init) hasta (lin_end,col_end),...
bool SaveInStream(std::ofstream &myfile) const
Escribe en un archivo de texto el contenido de la matriz.
bool IsGeq(double val) const
Verifica si cada elemento de la matriz es mayor a el valor val.
Pds::Matrix GetRows(unsigned int lin_init, unsigned int lin_end) const
Retorna una sub matriz escojida desde la linea lin_init hasta lin_end, inclusive. Hace una verificaci...
Pds::Matrix GetCols(std::vector< unsigned int > Vec) const
Retorna una sub matriz escojida desde una lista de indices de columnas. Hace una verificación si los ...
Pds::Array< unsigned int > IdInMultipleMse(const std::vector< Pds::Matrix > &Block) const
Calcula que linea de A es mas cercana a cada muestra de Block.
Pds::Matrix GetCols(unsigned int col_init, unsigned int col_end) const
Retorna una sub matriz escojida desde la columna col_init hasta col_end, inclusive....
std::vector< Pds::Matrix > FindRowsBlock(const Pds::Vector &B) const
Retorna dos nuevas matrices con las lineas donde existe un 0 (mat0) y un 1 (mat1) en la matriz B....
Pds::Matrix GetCols(std::list< unsigned int > List) const
Retorna una sub matriz escojida desde una lista de indices de columnas. Hace una verificación si los ...
double Rms(void) const
Calcula valor raiz quadrático medio de una matriz.
Pds::Vector GetColVector(unsigned int col) const
Retorna un vector columna copia de una columna de la matriz.
Matrix(Pds::Ra::FormatType Type, std::string filepath)
Crea un objeto de tipo Pds::Matrix copiando datos desde un archivo.
Pds::Matrix GetRow(unsigned int lin) const
Retorna una matriz linea escojida en la linea lin. Hace una verificación si la linea existe,...
Pds::Matrix Sub(const Pds::Matrix &B) const
[Elemento a elemento] Resta con sigo mismo (A), una matriz B y el resultado es cargado en C....
Pds::Vector GetRowAsColVector(unsigned int lin) const
Retorna un vector columna copia de una linea de la matriz.
Pds::Matrix Round(unsigned int decimal=0) const
Retorna una matriz con los valores redondeados.
bool StdAndMeanOfRegion(const Pds::RegionRect &Rin, double *std, double *mean) const
Calcula el desvío padrón y la media de los elementos de la intersección de la región con la matriz.
static Pds::Matrix GetSamples(const std::vector< Pds::Matrix > &Block)
Convierte las muestras de un bloque (std::vector<Pds::Matrix>) de N matrices (Pds::Matrix) de L eleme...
Pds::Matrix operator/(double b) const
[Elemento a elemento] Divide con sigo mismo (A), un valor b y el resultado es cargado en C....
bool MulComp(double b, const Pds::Vector &B, Pds::Vector &Out) const
Multiplica con sigo mismo (A), un vector [b;B] y el resultado es cargado en Out. Este método es simil...
bool NormalizeCols(Pds::Vector &Mean, Pds::Vector &Std)
Calcula la media y el standard deviation de cada columna de la matriz. Si el std de la columna es cer...
Pds::Matrix BalancedBinaryWeight(double umbral) const
Retorna una matriz de pesos para balancear la cantidad de 1s y 0s en la matriz. Los unos y ceros en l...
double MeanAbsolute(void) const
Calcula valor absoluto medio de una matriz.
static double ** ArrayAllocate(double(*func)(double), const Pds::Matrix &A)
crea dinámicamente un arreglo de A.Nlin() lineas y A.Ncol() columnas, con los datos copiados de aplic...
Pds::Matrix EqualTo(double b) const
[Elemento a elemento] Calcula con sigo mismo (A), si (A) es identico a un valor b y el resultado es c...
bool ApplySub(const Pds::Matrix &B, const Pds::Matrix &C)
Aplica la función func a cada elemento de la diferencia de matrices.
double Mean(void) const
Calcula el valor medio de la matriz.
bool RowReduction(void)
Convierte la matriz en una matriz reducida.
static Pds::Matrix GetSamples(const std::vector< Pds::Matrix > &Block, const std::vector< unsigned int > Id)
Convierte M muestras de un bloque (std::vector<Pds::Matrix>) de N matrices (Pds::Matrix) de L element...
Matrix(double(*func)(double, double, double, double), const Pds::Matrix &X, const Pds::Matrix &Y, const Pds::Matrix &Z, double var)
Crea un objeto de tipo Pds::Matrix, evaluando mediante una función, los datos de otra matriz.
double Accuracy(const Pds::Matrix &B, double Umbral) const
Calcula el valor de la Accuracy entre los elementos de las matrices A (Self) y B. Antes de comprarar ...
bool IsMulBy(const Pds::Matrix &B) const
Verifica si las matrices son multiplicables.
Matrix(unsigned int Nlin, unsigned int Ncol)
Crea un objeto de tipo Pds::Matrix con elementos inicializados con cero.
bool SubAssig(double b)
Resta y acumula en si mismo (A), un valor b. Este es similar al operador -=.
double Bilinear(double lin, double col) const
Retorna el valor en la posición (lin,col), usando una interpolación bilinear, valores fuera del rango...
bool IsSimilarTo(const Pds::Matrix &B) const
Verifica si las matrices son similares en tamaño.
Pds::Matrix & operator*=(double b)
Multiplica y acumula en si mismo (A), un valor b. Este operador es similar al método MulAssig()
static Pds::Matrix MeanBlock(const std::vector< Pds::Matrix > &Block)
Calcula A,la matriz media de un conjunto de N matrizes agrupadas en un std::vector.
double & At(unsigned int lin, unsigned int col)
Retorna una variable double en la posición (lin,col) de la matriz. Hace una verificación para evitar ...
bool IsEqualTo(double val) const
Verifica si cada elemento de la matriz es igual a el valor val.
Matrix(double(*func)(double, double, double), const Pds::Matrix &B, const Pds::Matrix &C, double var)
Crea un objeto de tipo Pds::Matrix, evaluando mediante una función, los datos de otra matriz.
Pds::Matrix EqualToFinite(void) const
Verifica si la matriz tiene elementos con valores finitos (no +inf, no -inf y no NAN).
Pds::Matrix DivBelow(double b) const
[Elemento a elemento] Divide con sigo mismo (A), un valor b y el resultado es cargado en C....
bool CopyRegion(const Pds::RegionRect &Rin, const Pds::RegionRect &Rout, Pds::Matrix &Mout) const
Copia la región Rin de la matriz a la región Rout de la matriz Mout.
bool AddAssig(const Pds::Matrix &B)
Suma y acumula en si mismo (A), una matriz B. Este es similar al perador +=.
void Print(std::string str) const
Imprime en pantalla el contenido de la matriz después del texto indicado en str.
bool CorrNormRegions(const Pds::Matrix &M1, const Pds::RegionRect &R0, const Pds::RegionRect &R1, double means0, double means1, double *corrn) const
Calcula correlación normalizada entre los elementos de la intersección de la regiones con sus matrice...
bool FillRandU(void)
Inicializa la matriz con números aleatórios, distribuidos uniformemente, desde 0 a 1....
Pds::Matrix operator-(void) const
Cambia de signo a si mismo (A), el resultado es cargado en B. Este operador es similar al método unar...
double Corr(const Pds::Matrix &B) const
Calcula la correlación de Pearson con la matriz.
Pds::Matrix TMul(const Pds::Matrix &B) const
Multiplica con la transpuesta de sí mismo (A^T), la matriz B y el resultado es cargado en C....
bool RowMulAssig(unsigned int lin, double alpha)
Multiplica la linea lin por alpha.
bool HasInf(void) const
Verifica si la matriz tiene algun valor infinito.
bool Apply(double(*func)(double))
Aplica la función func a cada elemento de la matriz.
double Min(unsigned int *id=NULL) const
Calcula el mínimo valor de la matriz.
bool IsNotMulBy(const Pds::Matrix &B) const
Verifica si las matrices son multiplicables.
bool SetMatrix(unsigned int lin, unsigned int col, const Pds::Matrix &B)
Copia en si mismo (A) en la posicion (lin,col), el contenido de una matriz B. Si a matriz B no cabe e...
Pds::Matrix Div(const Pds::Matrix &B) const
[Elemento a elemento] Divide con sigo mismo (A), elemento a elemento, una matriz B y el resultado es ...
Pds::Matrix Div(double b) const
[Elemento a elemento] Divide con sigo mismo (A), un valor b y el resultado es cargado en C....
bool SetRowVector(unsigned int lin, const Pds::Vector &X)
Copia un vector en una linea de la matriz.
bool AddAssigAt(unsigned int lin, unsigned int col, const Pds::Matrix &B)
Suma y acumula en si mismo (A), una matriz B desde un punto (lin,col) haciendo una intersección.
bool GetRowAsColVector(unsigned int lin, Pds::Vector &V) const
Retorna un vector columna copia de una linea de la matriz.
static std::vector< Pds::Matrix > ImportBmpFile(const std::string &bmpfilename)
Lee matrices de un archivo binario en formato BMP.
bool SetDiagonal(const Pds::Vector V)
Copia un vector columna en una diagonal de la matriz. Si los tamaños son diferentes,...
Pds::Matrix operator*(double b, const Pds::Matrix &A)
Multiplica b con (A), el resultado es cargado en C. Este operador es similar al método Mul()
bool Apply(double(*func)(double, double), double var)
Aplica la función func a cada elemento de la matriz.
double SumSquare(void) const
Calcula valor de la suma quadrática de una matriz.
bool MeanStdInCols(Pds::Matrix &Mean, Pds::Matrix &Std) const
Calcula la media y el standard deviation de cada linea de la matriz.
Matrix(const Pds::Size &S)
Crea un objeto de tipo Pds::Matrix con elementos inicializados con cero.
double & At(unsigned int id)
Retorna una variable double en la posición (id) de la matriz. Hace una verificación para evitar leer ...
bool IsColMatrix(void) const
Verifica si la matriz tiene solo una columna.
double MeanSquare(void) const
Calcula valor quadrático medio de una matriz.
Pds::Matrix Sub(double b) const
[Elemento a elemento] Resta con sigo mismo (A), una valor b y el resultado es cargado en C....
double MeanSquareOfRegion(const Pds::RegionRect &Rin) const
Calcula la media del cuadrado de los elementos en la region, pero para que sea calculado debe existir...
bool MeanSquareOfRegion(const Pds::RegionRect &Rin, double *mean) const
Calcula la media del cuadrado de los elementos en la region, pero para que sea calculado debe existir...
bool Copy(double val)
Copia en si mismo (A), el valor val. Este método es similar a usar el operador = ....
bool HasNotFinite(void) const
Verifica si la matriz tiene elementos no finitos (+inf, -inf y NAN).
bool IsInSizeRange(double lin, double col) const
Verifica si la posición (lin,col) pertenece al rango de la matriz.
Matrix(void)
Crea un objeto de tipo Pds::Matrix vacio.
double Sum(void) const
Calcula el valor de la suma de elementos de la matriz.
bool IsGeq(const Pds::Matrix &B) const
Verifica si cada elemento de la matriz es mayor igual a cada elemento de la matriz B.
double PNorm1(void) const
Calcula la 1-norm de un vector.
Pds::Matrix GetRowsRand(unsigned int N) const
Retorna una sub matriz escojiendo N lineas aleatoriamente (sin repetición).
Pds::Matrix NotEqualTo(double b) const
[Elemento a elemento] Calcula con sigo mismo (A), si (A) no es identico a un valor b y el resultado e...
static bool ExportBmpFile(const Pds::Matrix &R, const Pds::Matrix &G, const Pds::Matrix &B, const std::string &bmpfilename)
Escribe en una matriz en un archivo binario en formato BMP. Losdatos deben ir de 0 a 255,...
Pds::Matrix GetRows(std::list< unsigned int > List) const
Retorna una sub matriz escojida desde una lista de indices de lineas. Hace una verificación si los in...
Pds::Matrix T(void) const
Transpuesta de si mismo (A), el resultado es cargado en B.
double Rf(const Pds::Matrix &Y) const
Calcula o .
Pds::Matrix Add(const Pds::Matrix &B) const
[Elemento a elemento] Suma con sigo mismo (A), una matriz B y el resultado es cargado en C....
Pds::Matrix Geq(Pds::Matrix B) const
[Elemento a elemento] Calcula con sigo mismo (A), si (A) es mayor que un valor (B) y el resultado es ...
Pds::Matrix MtM(void) const
Retorna A.T()*A cargado en B.
bool IsInRange(unsigned int lin, unsigned int col) const
Verifica si la posición pertenece a la matriz.
static double ** ArrayAllocate(double(*func)(double, double, double, double), const Pds::Matrix &A, const Pds::Matrix &B, const Pds::Matrix &C, double var)
crea dinámicamente un arreglo de A.Nlin() lineas y A.Ncol() columnas, con los datos copiados de aplic...
bool ProductSelfPlus(double b, const Pds::Matrix &B)
[Elemento a elemento] Multiplica con sigo mismo (A), elemento a elemento, una matriz (b+B) y el resul...
static double ** ArrayAllocate(double(*func)(double, double), const Pds::Matrix &A, const Pds::Matrix &B)
crea dinámicamente un arreglo de A.Nlin() lineas y A.Ncol() columnas, con los datos copiados de aplic...
Pds::Matrix MultipleMse(const Pds::Matrix &B) const
Calcula el error quadrático medio de cada linea de A con cada linea de B.
double Max(unsigned int *id=NULL) const
Calcula el máximo valor de la matriz.
double MinAbs(unsigned int *id=NULL) const
Calcula el mínimo valor del valor absoluto de la matriz.
bool FillRandC(double p1)
Inicializa la matriz con números aleatórios unos y ceros, la probabilidad de 1 es p1.
bool SetColVector(unsigned int col, const Pds::Vector V)
Copia un vector columna en una columna de la matriz. Si los tamaños son diferentes,...
bool SubAssig(const Pds::Matrix &B)
Resta y acumula en si mismo (A), una matriz B. Este es similar al operador -=.
Pds::Matrix operator+(double b, const Pds::Matrix &A)
Suma b con (A), el resultado es cargado en C. Este operador es similar al método Add()
bool Copy(const Pds::Array< Datum > &B)
Copia en si mismo (A), el contenido de una Array B. Este método es similar a usar el operador = ....
unsigned int Ncol(void) const
Retorna el numero de columnas de la matriz.
double Dot(const Pds::Matrix &B) const
Calcula el producto punto entre dos matrices.
double P1Probability(double umbral) const
Calcula la probabilidad binaria {p1}, la probabilidade en relación a los unos y ceros en la matriz de...
std::ostream & operator<<(std::ostream &out, const Pds::Matrix &mat)
Retorna el contenido de la matriz por la salida estándar.
Pds::Matrix MulComp(double b, const Pds::Vector &B) const
Multiplica con sigo mismo (A), un vector [b;B] y el resultado es cargado en C. Este método es similar...
bool Apply(double(*func)(double), const Pds::Matrix &B)
Aplica la función func a cada elemento de la matriz.
Pds::Matrix Scale(double minval, double maxval) const
Rescala linearmente los datos desde minval a maxval.
Pds::Matrix MultipleMse(const std::vector< Pds::Matrix > &Block) const
Calcula el error quadrático medio de cada linea de A con cada muestra en el bloque Block.
bool Save(const std::string &filepath) const
Escribe en un archivo de texto el contenido de la matriz.
static double ** ArrayAllocate(double(*func)(double, double, double), const Pds::Matrix &A, const Pds::Matrix &B, const Pds::Matrix &C)
crea dinámicamente un arreglo de A.Nlin() lineas y A.Ncol() columnas, con los datos copiados de aplic...
Pds::Matrix operator-(double b, const Pds::Matrix &A)
Resta b con (A), el resultado es cargado en C. Este operador es similar al método Add()
bool AddAssig(double b)
Suma y acumula en si mismo (A), un valor b. Este es similar al perador +=.
Pds::Matrix MinInCols(std::vector< unsigned int > &Lin) const
Calcula el mínimo en cada columna de la matriz.
bool ProductSelf(const Pds::Matrix &B)
[Elemento a elemento] Multiplica con sigo mismo (A), elemento a elemento, una matriz B y el resultado...
Pds::Matrix operator*(double b) const
Multiplica con sigo mismo (A), un valor b y el resultado es cargado en C. Este operador es similar al...
unsigned int LinEnd(void) const
Retorna el identificador de la ultima linea de la matriz.
bool ApplySub(double(*func)(double), const Pds::Matrix &B, const Pds::Matrix &C)
Aplica la función func a cada elemento de la diferencia de matrices.
Pds::Matrix Minus(void) const
Cambia de signo a si mismo (A), el resultado es cargado en B. Este método es similar al operador unar...
double MeanOfRegion(const Pds::RegionRect &Rin) const
Calcula la media de los elementos en la region, pero para que sea calculado debe existir una intersec...
Pds::Matrix SubRowMatrix(const Pds::Matrix &B) const
Resta con sigo mismo (A), una matriz B linea y el resultado es cargado en C. La unica linea de B es r...
bool Set(unsigned int id, double val)
Escribe el valor en la posición del índice id, hace una verificación si la posición existe.
Pds::Matrix operator&(const Pds::Matrix &B) const
[Elemento a elemento] Multiplica con sigo mismo (A), elemento a elemento, una matriz B y el resultado...
Pds::Matrix Plus(void) const
Asigna el signo + a si mismo (A), el resultado es cargado en B. Este método es similar al operador un...
Pds::Matrix OperateCols(double(*func)(const Pds::Matrix &Col)) const
Opera la función func usando como entrada cada columna de la matriz.
bool MeanOfRegion(const Pds::RegionRect &Rin, double *mean) const
Calcula la media de los elementos en la region, pero para que sea calculado debe existir una intersec...
double Var(double *mean=NULL) const
Calcula el valor de la varianza de la matriz.
bool LoadFromStream(std::ifstream &ifs, unsigned int Nlin, unsigned int Ncol)
Lee de un archivo una matriz de Nlin lineas y Ncol columnas. Si la lectura es satisfactoria el conten...
Pds::RegionRect GetRegion(void) const
Retorna una variable Pds::RegionRect desde la posicion (0,0), con ancho y alto (Mat....
Pds::Array< unsigned int > IdInMultipleMse(const Pds::Matrix &B) const
Calcula que linea de A es mas cercana a cada linea de B.
int RowSwapBelow(unsigned int n)
Si el n-avo elemento de la diagonal es cero entonces intercambia la linea n de la matriz con cualquie...
Pds::Matrix MeanInCols(void) const
Calcula el valor medio de las columnas de la matriz.
bool SetColVector(unsigned int col, double(*func)(double), const Pds::Vector V)
Copia un vector columna en una columna de la matriz, despues de evaluar el vector en una funcion....
bool MeanStdInRows(Pds::Vector &Mean, Pds::Vector &Std) const
Calcula la media y el standard deviation de cada linea de la matriz.
Pds::Matrix Mul(const Pds::Vector &B) const
Multiplica con sigo mismo (A), un vector B y el resultado es cargado en C. Este método es similar al ...
Pds::Vector StdInRows(void) const
Calcula el standard deviation de cada linea de la matriz.
bool IsZero(void) const
Verifica si la matriz está llena de zeros.
bool HasNan(void) const
Verifica si la matriz tiene algun valor NAN (Not A Number).
bool ExportBmpFile(const unsigned char colormap[256][3], const std::string &filepath) const
Escribe en una matriz en un archivo binario en formato BMP. Losdatos deben ir de 0 a 255,...
bool IsRowMatrix(void) const
Verifica si la matriz tiene solo una linea.
void Print(void) const
Imprime en pantalla el contenido de la matriz.
Pds::Matrix FindRows(const Pds::Vector &B, double b) const
Retorna una nueva matriz con las lineas donde existe un 1 en la matriz B. En verdad B es binarizado i...
Pds::Vector Multiindex(const Pds::Vector &d) const
Dada una matriz es calculado el vector .
bool MulAssig(const Pds::Matrix &B)
Multiplica y acumula en si mismo (A), una matriz B. Este es similar al operador *=.
Pds::Matrix Leq(double b) const
[Elemento a elemento] Calcula con sigo mismo (A), si (A) es menor que un valor b y el resultado es ca...
Matrix(const Pds::Matrix &B)
Crea un objeto de tipo Pds::Matrix copiando datos desde otra matriz. Este es un Copy assignment const...
Pds::Matrix FindRows(const Pds::Vector &B) const
Retorna una nueva matriz con las lineas donde existe un 1 en la matriz B. En verdad B es binarizado i...
bool IsLeq(const Pds::Matrix &B) const
Verifica si cada elemento de la matriz es menor igual a cada elemento de la matriz B.
bool Fill(double val)
Inicializa la matriz con un valor constante.
bool RowSwap(unsigned int lin1, unsigned int lin2)
Intercambia los valores de las lineas de una matriz.
bool LoadLineFromStream(std::ifstream &ifs)
Lee una linea de un archivo y crea una matriz de Nlin=1 y Ncol columnas. Si la lectura es satisfactor...
unsigned int End(void) const
Retorna el identificador del ultimo elemento de la matriz.
Matrix(const std::string &str)
Crea un objeto de tipo Pds::Matrix copiando datos desde una std::string.
bool FillRandN(void)
Inicializa la matriz con números aleatórios, distribuidos usando una distribución Gaussiana normaliza...
double Get(unsigned int id) const
Retorna el valor en la posición del índice id, hace una verificación si la posición existe.
double Get(unsigned int lin, unsigned int col) const
Retorna el valor en la posición (lin,col), hace una verificación si la posición existe.
Pds::Matrix EqualTo(const Pds::Matrix &B) const
[Elemento a elemento] Calcula con sigo mismo (A), si (A) es identico a un valor B y el resultado es c...
bool CorrPearsonRegions(const Pds::Matrix &M1, const Pds::RegionRect &R0, const Pds::RegionRect &R1, double *pcc) const
Calcula el coeficiente de correlación de Pearson (PCC) entre los elementos de la intersección de la r...
Pds::Matrix PInv(double *rcond=NULL) const
Procesa esta matriz A y retorna B la matriz pseudo inversa de Moore Penrose.
bool AddAssig(double alpha, const Pds::Matrix &B)
Suma y acumula en si mismo (A), una matriz B.
Pds::Matrix Mul(double b) const
Multiplica con sigo mismo (A), un valor b y el resultado es cargado en C. Este método es similar al o...
double InformationGain(const std::vector< Pds::Matrix > &A, double Umbral=0.5) const
Retorna el Information Gain entre si mismo B y {A[0],A[1],...,A[N-1]}. Antes de comprarar las matrice...
Pds::Matrix FilterMean3(void) const
Procesa la matriz A usando un filtro mean de radio 1.
bool CorrPearsonRegions(const Pds::Matrix &M1, const Pds::RegionRect &R0, const Pds::RegionRect &R1, double mean0, double mean1, double std0, double std1, double *pcc) const
Calcula el coeficiente de correlación de Pearson (PCC) entre los elementos de la intersección de la r...
Pds::Matrix operator+(void) const
Asigna el signo + a si mismo (A), el resultado es cargado en B. Este operador es similar al método un...
bool ExportCsvFile(const std::string &filepath, std::vector< std::string > titles, char delimitador=',') const
Escribe en un archivo de texto el contenido de la matriz usando un formato Csv (Comma Separated Value...
bool FillRandU(double a, double b)
Inicializa la matriz con números aleatórios, distribuidos uniformemente, desde a a b,...
bool SetColValue(unsigned int col, double value)
Copia un valor en una columna de la matriz.
bool FillId(void)
Inicializa la matriz con el valor de la posición de cada elemento.
bool InitRegion(Pds::RegionRect R, double val)
Inicializa la región R de la matriz con el valor val.
bool AddAssig(double alpha, const Pds::Matrix &B, double beta, const Pds::Matrix &C)
Suma y acumula en si mismo (A), una matriz B.
bool IsNotSimilarTo(const Pds::Matrix &B) const
Verifica si las matrices son similares en tamaño.
Pds::Matrix & operator=(const Pds::Matrix &B)
Copia en si mismo (A), una matriz B. Este operador es similar al método Copy(). No importa el tamaño ...
bool FillRandN(double U, double Sigma)
Inicializa la matriz con números aleatórios, distribuidos usando una distribución Gaussiana con media...
bool RowDivByAbsMax(void)
Normaliza cada linea de la matriz dividiendola por el maximo valor absoluto de la linea....
double Norm(void) const
Calcula la 2-norm de una matriz (Frobenius norm).
double Det(void) const
Calcula la determinante.
Pds::Vector HistogramNorm(int min=0, int max=255) const
Retorna un vector con el histograma desde min hasta max (valores enteros). Elementos con valores meno...
static double ** ArrayAllocate(double(*func)(double, double, double), const Pds::Matrix &A, const Pds::Matrix &B, double var)
crea dinámicamente un arreglo de A.Nlin() lineas y A.Ncol() columnas, con los datos copiados de aplic...
Pds::Matrix OperateRows(double(*func)(const Pds::Matrix &Row)) const
Opera la función func usando como entrada cada fila de la matriz.
const double & GetRaw(unsigned int lin, unsigned int col) const
Retorna una variable double en la posición (lin,col) de la array.
Definition: Matrix.hpp:1043
bool ExportCsvFile(const std::string &filepath, char delimitador=',') const
Escribe en un archivo de texto el contenido de la matriz usando un formato Csv (Comma Separated Value...
bool RowDivAssig(unsigned int lin, double alpha)
Divide la linea lin por alpha.
Pds::Matrix Pow(double val) const
[Elemento a elemento] Potencia asi mismo (A), elemento a elemento, con un valor val y el resultado es...
Pds::Matrix operator/(double b, const Pds::Matrix &A)
Divide b con (A), elemento a elemento y el resultado es cargado en C. Este operador es similar al mét...
Pds::Matrix Geq(double b) const
[Elemento a elemento] Calcula con sigo mismo (A), si (A) es mayor que un valor b y el resultado es ca...
double Mape(const Pds::Matrix &B) const
Calcula el error absoluto medio porcentual (Mean Absolute Percentage Error) de una matriz.
Matrix(double(*func)(double, double), const Pds::Matrix &B, const Pds::Matrix &C)
Crea un objeto de tipo Pds::Matrix, evaluando mediante una función, los datos de otra matriz.
bool Reshape(unsigned int Nlin, unsigned int Ncol)
Remodela los datos internos de la array y la convierte en una array de tamaño diferente,...
bool IsNotInRange(unsigned int lin, unsigned int col) const
Verifica si la posición NO pertenece a la matriz.
Pds::Vector GetDiagonal(void) const
Retorna un vector columna copia de los valores de la diagonal de la matriz.
bool FillRandU(int a, int b)
Inicializa la matriz con números aleatórios, distribuidos uniformemente, desde a a b,...
Pds::Size Size(void) const
Retorna un objeto de tipo Pds::Size con el numero de lineas y columans.
Pds::Matrix MinInCols(Pds::Array< unsigned int > &Lin) const
Calcula el mínimo en cada columna de la matriz.
Pds::Matrix GetCol(unsigned int col) const
Retorna una matriz columna escojida en la columna col. Hace una verificación si la columna existe,...
Matrix(unsigned int Nlin, unsigned int Ncol, double val)
Crea un objeto de tipo Pds::Matrix con elementos inicializados con val.
std::string ToString(void) const
Convierte los datos de la matriz en un std::string.
Pds::Matrix & operator+=(double b)
Suma y acumula en si mismo (A), un valor b. Este operador es similar al método AddAssig()
Pds::Vector MeanInRows(void) const
Calcula la media de cada linea de la matriz.
Matrix(double(*func)(double, double, double, double), const Pds::Matrix &X, const Pds::Matrix &Y, const Pds::Matrix &Z, const Pds::Matrix &W)
Crea un objeto de tipo Pds::Matrix, evaluando mediante una función, los datos de otra matriz.
bool IsEmpty(void) const
Verifica si la matriz es nula es decir con lineas o columnas cero o arreglo NULL.
static Pds::Matrix FromString(const std::string &str)
Convierte un sdt::string a una Matriz de Nlin lineas y Ncol columnas.
bool MulAssig(double b)
Multiplica y acumula en si mismo (A), un valor b. Este es similar al operador *=.
Pds::Matrix XCorr(const Pds::Matrix &B, bool Same=false) const
Calcula la correlacion cruzada entre A y B.
Pds::Matrix EqualToInf(void) const
Verifica si la matriz tiene elementos con valores infinitos.
unsigned int Nlin(void) const
Retorna el numero de lineas de la matriz.
Pds::Matrix GetMatrix(unsigned int lin_init, unsigned int col_init, unsigned int lin_end, unsigned int col_end) const
Retorna una sub matriz desde la posición (lin_init,col_init) hasta (lin_end,col_end),...
bool ProductSelfMinus(double b, const Pds::Matrix &B)
[Elemento a elemento] Multiplica con sigo mismo (A), elemento a elemento, una matriz (b-B) y el resul...
bool ApplyInCol(unsigned int col, double(*func)(double))
Aplica la función func a cada elemento de la columna col de la matriz.
bool Copy(const Pds::Matrix &B)
Copia en si mismo (A), el contenido de una matriz B. Este método es similar a usar el operador = ....
std::vector< unsigned int > Find(void) const
Retorna una lista de indices donde existe un 1 en la matriz A.
double R2(const Pds::Matrix &Y) const
Calcula el coeficiente de determinación o .
Pds::Matrix Pow(const Pds::Matrix &B) const
[Elemento a elemento]Potencia asi mismo (A), elemento a elemento, con una matriz B y el resultado es ...
Pds::Matrix GetColsRand(unsigned int N) const
Retorna una sub matriz escojiendo N columnas aleatoriamente (sin repetición).
bool ProductSelf(double b)
Multiplica con sigo mismo (A), un valor b y el resultado es cargado en A.
bool NormalizeColsWith(const Pds::Vector &Mean, const Pds::Vector &Std)
Normaliza cada columna de la matriz usando la media y el standard deviation de cada columna de la mat...
unsigned int Nel(void) const
Retorna el numero de elementos de la matriz (Nlin x Ncol).
Pds::Matrix AddRowMatrix(const Pds::Matrix &B) const
Suma con sigo mismo (A), una matriz B linea y el resultado es cargado en C. La unica linea de B es su...
bool RowAddAssig(unsigned int lin1, unsigned int lin2, double alpha)
Multiplica los valores de la linea lin2 por alfa y el resultado es sumado a los valores de la linea l...
Pds::Matrix operator/(const Pds::Matrix &B) const
[Elemento a elemento] Divide con sigo mismo (A), elemento a elemento, una matriz B y el resultado es ...
bool CorrNormRegions(const Pds::Matrix &M1, const Pds::RegionRect &R0, const Pds::RegionRect &R1, double *corrn) const
Calcula correlación normalizada entre los elementos de la intersección de la regiones con sus matrice...
bool FusionVer(std::list< Pds::Matrix > &list)
Concatena verticalmente varias matrices. Si las matrices no tienen el mismo número de columnas se c...
Pds::Matrix Product(const Pds::Matrix &B) const
[Elemento a elemento] Multiplica con sigo mismo (A), elemento a elemento, una matriz B y el resultado...
bool ApplyInCol(unsigned int col, double(*func)(double, double), double var)
Aplica la función func a cada elemento de la columna col de la matriz.
static double ** ArrayAllocate(double(*func)(double, double), const Pds::Matrix &A, double var)
crea dinámicamente un arreglo de A.Nlin() lineas y A.Ncol() columnas, con los datos copiados de aplic...
Matrix(double(*func)(double, double), const Pds::Matrix &B, double var)
Crea un objeto de tipo Pds::Matrix, evaluando mediante una función, los datos de otra matriz.
Matrix(double(*func)(double), const Pds::Matrix &B)
Crea un objeto de tipo Pds::Matrix, evaluando mediante una función, los datos de otra matriz.
Matrix(double(*func)(double, double, double), const Pds::Matrix &X, const Pds::Matrix &Y, const Pds::Matrix &Z)
Crea un objeto de tipo Pds::Matrix, evaluando mediante una función, los datos de otra matriz.
void SetRaw(unsigned int lin, unsigned int col, const double &val)
Establece una variable double en la posición (lin,col) de la array.
Definition: Matrix.hpp:1057
Matrix(const char *str)
Crea un objeto de tipo Pds::Matrix copiando datos desde una cadena.
Pds::Matrix Leq(const Pds::Matrix &B) const
[Elemento a elemento] Calcula con sigo mismo (A), si (A) es menor que un valor B y el resultado es ca...
Pds::Vector MaxAbsInRows(void) const
Retorna un vector con el maximo valor absoluto de cada linea.
Pds::Matrix FilterMean(unsigned int r) const
Procesa la matriz A usando un filtro mean de radio r.
Pds::Matrix GetRows(std::vector< unsigned int > Vec) const
Retorna una sub matriz escojida desde una lista de indices de lineas. Hace una verificación si los in...
unsigned int ColEnd(void) const
Retorna el identificador de la ultima columna de la matriz.
Pds::Matrix Inv(double *rcond=NULL) const
Retorna la matriz inversa.
bool IsLeq(double val) const
Verifica si cada elemento de la matriz es menor a el valor val.
Pds::Matrix EqualToNan(void) const
Verifica si la matriz tiene elementos con valores NAN (Not A Number).
double Std(double *mean=NULL) const
Calcula el valor del desvío padrón de la matriz.
Pds::Matrix Add(double b) const
[Elemento a elemento] Suma con sigo mismo (A), una valor b y el resultado es cargado en C....
bool SetColVector(unsigned int col, double(*func)(double, double), const Pds::Vector V, double var)
Copia un vector columna en una columna de la matriz, despues de evaluar el vector en una funcion....
Pds::Matrix NotEqualTo(const Pds::Matrix &B) const
[Elemento a elemento] Calcula con sigo mismo (A), si (A) no es identico a un valor B y el resultado e...
double PNormInf(void) const
Calcula la inf-norm de una matriz.
bool ProductSelf(double(*func)(double), const Pds::Matrix &B)
[Elemento a elemento] Multiplica con sigo mismo (A), elemento a elemento, una matriz func(B) y el res...
Nombre de espacion para PDS (Procesamiento Digital de Senales)
Definition: RaFile.hpp:47

Enlaces de interés

HomePage Bazaar Download Bug report Ayuda Developer Feed