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 Vector;
97  friend class Array<double>;
98  friend class Array<unsigned int>;
99  friend class Array<unsigned char>;
100 public:
101 
120  Matrix(void);
121 
147  Matrix(unsigned int N);
148 
174  Matrix(const Pds::Size &S);
175 
196  Matrix(const Pds::Matrix &B);
197 
198 
211  template <class Datum>
213 
214 
228  Matrix(const char *str);
229 
230 
256  Matrix(unsigned int Nlin,unsigned int Ncol);
257 
284  Matrix(unsigned int Nlin,unsigned int Ncol,double val);
285 
307  Matrix(double (*func)(double),const Pds::Matrix &B );
308 
331  Matrix(double (*func)(double,double),const Pds::Matrix &B , double var);
332 
333 
361  Matrix(double (*func)(double,double),const Pds::Matrix &B ,const Pds::Matrix &C);
362 
363 
393  Matrix(double (*func)(double,double,double),const Pds::Matrix &B ,const Pds::Matrix &C, double var);
394 
424  Matrix(double (*func)(double,double,double),
425  const Pds::Matrix &X,
426  const Pds::Matrix &Y,
427  const Pds::Matrix &Z);
428 
460  Matrix(double (*func)(double,double,double,double),
461  const Pds::Matrix &X,
462  const Pds::Matrix &Y,
463  const Pds::Matrix &Z,
464  double var);
465 
497  Matrix(double (*func)(double,double,double,double),
498  const Pds::Matrix &X,
499  const Pds::Matrix &Y,
500  const Pds::Matrix &Z,
501  const Pds::Matrix &W);
502 
519  Matrix(Pds::Ra::FormatType Type,std::string filepath);
520 
522 
527 public:
528 
540  bool IsEmpty(void) const;
541 
548  bool IsNotEmpty(void) const;
549 
550 
559  bool IsSimilarTo(const Pds::Matrix &B) const;
560 
569  bool IsNotSimilarTo(const Pds::Matrix &B) const;
570 
579  bool IsMulBy(const Pds::Matrix &B) const;
580 
589  bool IsNotMulBy(const Pds::Matrix &B) const;
590 
601  bool IsInRange(unsigned int lin,unsigned int col) const;
602 
613  bool IsNotInRange(unsigned int lin,unsigned int col) const;
614 
625  bool IsInSizeRange(double lin,double col) const;
626 
627 
635  bool IsRowMatrix(void) const;
636 
637 
645  bool IsColMatrix(void) const;
646 
663  bool IsZero(void) const;
664 
674  bool IsLeq(double val) const;
675 
685  bool IsLeq(const Pds::Matrix &B) const;
686 
696  bool IsGeq(double val) const;
697 
707  bool IsGeq(const Pds::Matrix &B) const;
708 
718  bool IsEqualTo(double val) const;
719 
729  bool IsEqualTo(const Pds::Matrix &B) const;
730 
745  bool HasInf(void) const;
746 
761  bool HasNan(void) const;
762 
763 
777  bool HasNotFinite(void) const;
778 
779 
784 public:
785 
802  bool FillRandC(double p1);
803 
816  bool FillRandN(void);
817 
832  bool FillRandN(double U, double Sigma);
833 
846  bool FillRandU(void);
847 
862  bool FillRandU(int a, int b);
863 
878  bool FillRandU(double a, double b);
879 
894  bool FillId(void );
895 
911  bool Fill(double val);
912 
931  bool FillLinSpace(double a,double b);
936 public:
937 
947  unsigned int Nlin(void) const;
948 
953  unsigned int Ncol(void) const;
954 
959  unsigned int Nel(void) const;
960 
965  Pds::Size Size(void) const;
966 
971  unsigned int LinEnd(void) const;
972 
977  unsigned int ColEnd(void) const;
978 
983  unsigned int End(void) const;
984 
985 
990 public:
991 
1006  double Get(unsigned int id) const;
1007 
1016  double Get(unsigned int lin,unsigned int col) const;
1017 
1018 
1027  const double &GetRaw(unsigned int lin,unsigned int col) const
1028  {
1029  return this->array[lin][col];
1030  }
1031 
1032 
1041  void SetRaw(unsigned int lin,unsigned int col,const double &val)
1042  {
1043  this->array[lin][col]=val;
1044  }
1045 
1054  bool Set(unsigned int id,double val);
1055 
1065  bool Set(unsigned int lin,unsigned int col,double val);
1066 
1075  double &At(unsigned int lin,unsigned int col);
1076 
1084  double &At(unsigned int id);
1085 
1086 
1098  double Bilinear(double lin,double col) const;
1099 
1104 public:
1105 
1117 
1126  bool SetDiagonal(const Pds::Vector V);
1127 
1128 
1139  Pds::Matrix GetMatrix(unsigned int lin_init,unsigned int col_init,unsigned int lin_end,unsigned int col_end) const;
1140 
1150  Pds::Matrix GetMatrix(unsigned int lin_init,unsigned int col_init,Pds::Size size) const;
1151 
1162  bool SetMatrix(unsigned int lin,unsigned int col,const Pds::Matrix &B);
1163 
1164 
1171  Pds::Matrix GetRow(unsigned int lin) const;
1172 
1179  Pds::Matrix GetCol(unsigned int col) const;
1180 
1189  Pds::Matrix GetRows(unsigned int lin_init,unsigned int lin_end) const;
1190 
1199  Pds::Matrix GetCols(unsigned int col_init,unsigned int col_end) const;
1200 
1207  Pds::Matrix GetRows(std::list<unsigned int> List) const;
1208 
1215  Pds::Matrix GetCols(std::list<unsigned int> List) const;
1216 
1223  Pds::Matrix GetRows(std::vector<unsigned int> Vec) const;
1224 
1231  Pds::Matrix GetCols(std::vector<unsigned int> Vec) const;
1232 
1233 
1242  Pds::Matrix GetRowsRand(unsigned int N) const;
1243 
1252  Pds::Matrix GetColsRand(unsigned int N) const;
1253 
1261  bool SetRowValue(unsigned int lin,double value);
1262 
1270  bool SetRowVector(unsigned int lin,const Pds::Vector &X);
1271 
1279  bool SetColValue(unsigned int col,double value);
1280 
1287  Pds::Vector GetRowAsColVector(unsigned int lin) const;
1288 
1289 
1296  Pds::Vector GetColVector(unsigned int col) const;
1297 
1307  bool SetColVector(unsigned int col,const Pds::Vector V);
1308 
1320  bool SetColVector(unsigned int col,double (*func)(double),const Pds::Vector V);
1321 
1334  bool SetColVector(unsigned int col,double (*func)(double,double),const Pds::Vector V,double var);
1335 
1341 public:
1342 
1358  bool RowAddAssig(unsigned int lin1,unsigned int lin2,double alpha);
1359 
1368  bool RowMulAssig(unsigned int lin,double alpha);
1369 
1378  bool RowDivAssig(unsigned int lin,double alpha);
1379 
1386  bool RowSwap(unsigned int lin1,unsigned int lin2);
1387 
1398  int RowSwapBelow(unsigned int n);
1399 
1407  bool RowReduction(void);
1413 public:
1414 
1425  double Sum(void) const;
1426 
1433  double Mean(void) const;
1434 
1441  double Var(double *mean=NULL) const;
1442 
1449  double Std(double *mean=NULL) const;
1450 
1451 
1459  double MaxAbs(unsigned int *id=NULL) const;
1460 
1468  double MinAbs(unsigned int *id=NULL) const;
1469 
1477  double Max(unsigned int *id=NULL) const;
1478 
1486  double Min(unsigned int *id=NULL) const;
1487 
1495  Pds::Matrix MinInCols(std::vector<unsigned int> &Lin) const;
1496 
1505 
1515  double R2(const Pds::Matrix &Y) const;
1516 
1527  double Rf(const Pds::Matrix &Y) const;
1528 
1538  double Mape(const Pds::Matrix &B) const;
1544 public:
1545 
1556  double Corr(const Pds::Matrix &B) const;
1557 
1614  Pds::Matrix XCorr(const Pds::Matrix &B, bool Same=false) const;
1615 
1633 
1634 
1652 
1668  Pds::Matrix Resize(double factor) const;
1669 
1675 public:
1676 
1689  double Det(void) const;
1690 
1699  double Dot(const Pds::Matrix &B) const;
1700 
1708  double Rms(void) const;
1709 
1710 
1718  double MeanAbsolute(void) const;
1719 
1727  double MeanSquare(void) const;
1728 
1736  double SumSquare(void) const;
1737 
1745  double Norm(void) const;
1746 
1747 
1755  double PNorm1(void) const;
1756 
1757 
1765  double PNormInf(void) const;
1766 
1783 public:
1784 
1796  std::vector<unsigned int> Find(void) const;
1797 
1807 
1817  Pds::Matrix FindRows(const Pds::Vector &B,double b) const;
1818 
1824 public:
1825 
1836  bool Apply( double (*func)(double) );
1837 
1845  bool Apply( double (*func)(double), Pds::Matrix &B);
1846 
1853  bool Apply( double (*func)(double,double), double var);
1854 
1861  bool ApplyInCol(unsigned int col, double (*func)(double) );
1862 
1870  bool ApplyInCol(unsigned int col, double (*func)(double,double), double var);
1871 
1872 
1878 public:
1879 
1890  Pds::Matrix OperateRows(double (*func)(const Pds::Matrix &Row)) const;
1891 
1897  Pds::Matrix OperateCols(double (*func)(const Pds::Matrix &Col)) const;
1898 
1899 
1907  Pds::Matrix Scale(double minval,double maxval) const;
1908 
1915  Pds::Matrix Round(unsigned int decimal=0) const;
1920 public:
1921 
1938  bool CopyRegion(const Pds::RegionRect &Rin,const Pds::RegionRect &Rout,Pds::Matrix &Mout) const;
1939 
1946  bool InitRegion(Pds::RegionRect R,double val);
1947 
1953 
1970  bool MeanOfRegion(const Pds::RegionRect &Rin, double *mean) const;
1971 
1987  double MeanOfRegion(const Pds::RegionRect &Rin) const;
1988 
2005  bool MeanSquareOfRegion(const Pds::RegionRect &Rin, double *mean) const;
2006 
2022  double MeanSquareOfRegion(const Pds::RegionRect &Rin) const;
2023 
2041  bool StdAndMeanOfRegion(const Pds::RegionRect &Rin, double *std, double *mean) const;
2042 
2043 
2062  bool CorrNormRegions( const Pds::Matrix &M1,
2063  const Pds::RegionRect &R0,
2064  const Pds::RegionRect &R1,
2065  double *corrn) const;
2066 
2087  bool CorrNormRegions( const Pds::Matrix &M1,
2088  const Pds::RegionRect &R0,
2089  const Pds::RegionRect &R1,
2090  double means0,
2091  double means1,
2092  double *corrn) const;
2093 
2127  const Pds::RegionRect &R0,
2128  const Pds::RegionRect &R1,
2129  double *pcc) const;
2130 
2168  const Pds::RegionRect &R0,
2169  const Pds::RegionRect &R1,
2170  double mean0,
2171  double mean1,
2172  double std0,
2173  double std1,
2174  double *pcc) const;
2179 public:
2180 
2191  std::string ToString(void) const;
2192 
2193 
2199  void Print(std::string str) const;
2200 
2204  void Print(void) const;
2205 
2210 public:
2211 
2224  void MakeEmpty(void);
2225 
2233  bool Reshape(unsigned int Nlin,unsigned int Ncol);
2234 
2235 
2245  bool FusionVer(std::list<Pds::Matrix> &list);
2246 
2247 
2253 public:
2254 
2265  bool SaveInStream(std::ofstream &myfile) const;
2266 
2276  bool LoadFromStream(std::ifstream &ifs,unsigned int Nlin,unsigned int Ncol);
2277 
2283  bool Save(const char* filepath) const;
2284 
2292  bool Load(const char* filepath);
2293 
2301  bool ExportCsvFile(const char* filepath,char delimitador=',') const;
2302 
2303 
2322  bool ExportMatFile(const char* pname,const char* filepath) const;
2323 
2333  bool ExportBmpFile(const unsigned char colormap[256][3],const std::string &filepath) const;
2339 public:
2340 
2352  static Pds::Matrix GetSamples(const std::vector<Pds::Matrix> &Block);
2353 
2362  static Pds::Matrix GetSamples(const std::vector<Pds::Matrix> &Block,const std::vector<unsigned int> Id);
2363 
2369  static Pds::Matrix FromString(const std::string &str);
2370 
2381  static bool ExportBmpFile( const Pds::Matrix &R,
2382  const Pds::Matrix &G,
2383  const Pds::Matrix &B,
2384  const std::string &bmpfilename);
2385 
2399  static std::vector<Pds::Matrix> ImportBmpFile( const std::string &bmpfilename);
2400 
2410  static Pds::Matrix MeanBlock( const std::vector<Pds::Matrix> &Block);
2416 public:
2417 
2441  Pds::Matrix T(void) const;
2442 
2460  Pds::Matrix MtM(void) const;
2461 
2462 
2479  Pds::Matrix Inv(double *rcond=NULL) const;
2480 
2498  Pds::Matrix PInv(double *rcond=NULL) const;
2499 
2500 
2520 
2539  Pds::Matrix Minus(void) const;
2540 
2560 
2579  Pds::Matrix Plus(void) const;
2611  Pds::Matrix operator * (double b) const;
2612 
2636 
2656  Pds::Matrix Mul(double b) const;
2657 
2679  Pds::Matrix Mul(const Pds::Matrix &B) const;
2680 
2702  Pds::Matrix Mul(const Pds::Vector &B) const;
2703 
2726  Pds::Matrix MulComp(double b,const Pds::Vector &B) const;
2727 
2751  bool MulComp(double b,const Pds::Vector &B, Pds::Vector &Out) const;
2752 
2774  Pds::Matrix MulT(const Pds::Matrix &B) const;
2775 
2797  Pds::Matrix TMul(const Pds::Matrix &B) const;
2798 
2799 
2821  Pds::Matrix operator + (double b) const;
2822 
2847 
2868  Pds::Matrix Add(double b) const;
2869 
2892  Pds::Matrix Add(const Pds::Matrix &B) const;
2893 
2894 
2916  Pds::Matrix operator - (double b) const;
2917 
2940 
2961  Pds::Matrix Sub(double b) const;
2962 
2984  Pds::Matrix Sub(const Pds::Matrix &B) const;
2985 
2986 
3010 
3034 
3055  Pds::Matrix operator / (double b) const;
3056 
3057 
3080 
3100  Pds::Matrix Div(double b) const;
3101 
3123  Pds::Matrix Div(const Pds::Matrix &B) const;
3124 
3125 
3145  Pds::Matrix DivSelf(double b) const;
3146 
3181 
3204 
3228  Pds::Matrix Product(double (*func)(double),const Pds::Matrix &B) const;
3229 
3250  bool ProductSelf(const Pds::Matrix &B);
3251 
3273  bool ProductSelf(double (*func)(double),const Pds::Matrix &B);
3274 
3296  bool ProductSelfMinus(double b, const Pds::Matrix &B);
3297 
3298 
3320  bool ProductSelfMinus(const Pds::Matrix &B,double b);
3321 
3343  bool ProductSelfPlus(double b, const Pds::Matrix &B);
3344 
3366  Pds::Matrix Pow(const Pds::Matrix &B) const;
3367 
3368 
3389  Pds::Matrix Pow(double val) const;
3390 
3410  Pds::Matrix Geq(double b) const;
3411 
3432 
3452  Pds::Matrix Leq(double b) const;
3453 
3473  Pds::Matrix Leq(const Pds::Matrix &B) const;
3474 
3475 
3495  Pds::Matrix EqualTo(double b) const;
3496 
3517 
3537  Pds::Matrix NotEqualTo(double b) const;
3538 
3559 
3560 
3583 
3606 
3628 
3656 
3674 
3689  bool SubAssig(double b);
3690 
3706  bool SubAssig(const Pds::Matrix &B);
3707 
3724 
3742 
3756  bool AddAssig(double b);
3757 
3773  bool AddAssig(const Pds::Matrix &B);
3774 
3791  bool AddAssig(double alpha, const Pds::Matrix &B);
3792 
3813  bool AddAssig(double alpha, const Pds::Matrix &B, double beta, const Pds::Matrix &C);
3814 
3833  bool AddAssigAt(unsigned int lin,unsigned int col,const Pds::Matrix &B);
3834 
3851 
3868 
3882  bool MulAssig(double b);
3883 
3898  bool MulAssig(const Pds::Matrix &B);
3899 
3900 
3901 
3924 
3937  bool Copy(const Pds::Matrix &B);
3938 
3939 
3940 
3962  Pds::Matrix& operator = (double val);
3963 
3976  bool Copy(double val);
3977 
3996  template <class Datum>
3998 
4010  template <class Datum>
4011  bool Copy(const Pds::Array<Datum> &B);
4012 
4013 
4042 
4060  Pds::Matrix MultipleMse(const std::vector<Pds::Matrix> &Block) const;
4061 
4076 
4090  Pds::Array<unsigned int> IdInMultipleMse(const std::vector<Pds::Matrix> &Block) const;
4091 
4092 
4098 public:
4099 
4112  static double** ArrayAllocate(double (*func)(double),const Pds::Matrix &A);
4113 
4123  static double** ArrayAllocate(double (*func)(double,double),const Pds::Matrix &A,double var);
4124 
4135  static double** ArrayAllocate(double (*func)(double,double),const Pds::Matrix &A,const Pds::Matrix &B);
4136 
4148  static double** ArrayAllocate(double (*func)(double,double,double),const Pds::Matrix &A,const Pds::Matrix &B,double var);
4149 
4161  static double** ArrayAllocate(double (*func)(double,double,double),
4162  const Pds::Matrix &A,
4163  const Pds::Matrix &B,
4164  const Pds::Matrix &C);
4165 
4178  static double** ArrayAllocate(double (*func)(double,double,double,double),
4179  const Pds::Matrix &A,
4180  const Pds::Matrix &B,
4181  const Pds::Matrix &C,
4182  double var);
4183 
4196  static double** ArrayAllocate(double (*func)(double,double,double,double),
4197  const Pds::Matrix &A,
4198  const Pds::Matrix &B,
4199  const Pds::Matrix &C,
4200  const Pds::Matrix &D);
4201 
4207 };// class Matrix
4208 
4209 } // namespace Pds
4210 
4211 
4212 
4213 
4233 std::ostream& operator<<(std::ostream &out,const Pds::Matrix &mat);
4234 
4257 Pds::Matrix operator+(double b,const Pds::Matrix &A);
4258 
4281 Pds::Matrix operator-(double b,const Pds::Matrix &A);
4282 
4305 Pds::Matrix operator*(double b,const Pds::Matrix &A);
4306 
4329 Pds::Matrix operator/(double b,const Pds::Matrix &A);
4330 
4339 #endif
4340 
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
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:157
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.
double MaxAbs(unsigned int *id=NULL) const
Calcula el máximo valor del valor absoluto de la matriz.
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....
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 algunas muestras de un bloque (std::vector<Pds::Matrix>) de N matrices (Pds::Matrix) de L e...
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...
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...
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.
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).
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.
bool Save(const char *filepath) const
Escribe en un archivo de texto el contenido de 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.
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.
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 ExportMatFile(const char *pname, const char *filepath) const
Escribe en un archivo binario en formato de octave la matriz. Es necesario dar un nombre como identif...
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 Apply(double(*func)(double), Pds::Matrix &B)
Aplica la función func a cada elemento de la matriz.
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.
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...
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.
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.
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...
bool ExportCsvFile(const char *filepath, char delimitador=',') const
Escribe en un archivo de texto el contenido de la matriz usando un formato Csv (Comma Separated Value...
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...
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....
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::Matrix DivSelf(double b) const
[Elemento a elemento] Divide con sigo mismo (A), un valor b y el resultado es cargado en C....
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.
unsigned int End(void) const
Retorna el identificador del ultimo elemento de la matriz.
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...
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 Load(const char *filepath)
Lee de un archivo una matriz de Nlin lineas y Ncol columnas. Si la lectura es satisfactoria el conten...
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...
double Norm(void) const
Calcula la 2-norm de una matriz (Frobenius norm).
double Det(void) const
Calcula la determinante.
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:1027
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()
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).
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:1041
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::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:46

Enlaces de interés

HomePage Bazaar Download Bug report Ayuda Developer Feed