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
65#include <string>
66#include <list>
67#include <map>
68#include <set>
69#include <vector>
70#include <Pds/Size>
71#include <Pds/RaDefines>
72#include <Pds/RegionRect>
73#include <Pds/Array>
74#include <Pds/Colormap>
75#include <Pds/Position>
76#include <Pds/Point2D>
77#include <Pds/Json>
78#include <Pds/AbstractRV>
79
80
81#include <iostream>
82#include <fstream>
83
84namespace Pds{
85
86class Vector;
87
95class Matrix
96{
97private:
99 double **array;
101 unsigned int nlin;
103 unsigned int ncol;
104
105 friend class CMatrix;
106 friend class CVector;
107 friend class Vector;
108 friend class Array<double>;
109 friend class Array<unsigned int>;
110 friend class Array<unsigned char>;
111public:
112
131 Matrix(void);
132
158 Matrix(unsigned int N);
159
185 Matrix(const Pds::Size &S);
186
213 Matrix(const Pds::Size &S,double val);
214
236
237
257 template <class Datum>
259
260
274 Matrix(const char *str);
275
290 Matrix(const std::string &str);
291
317 Matrix(unsigned int Nlin,unsigned int Ncol);
318
345 Matrix(unsigned int Nlin,unsigned int Ncol,double val);
346
368 Matrix(double (*func)(double),const Pds::Matrix &B );
369
392 Matrix(double (*func)(double,double),const Pds::Matrix &B , double var);
393
394
422 Matrix(double (*func)(double,double),const Pds::Matrix &B ,const Pds::Matrix &C);
423
424
454 Matrix(double (*func)(double,double,double),const Pds::Matrix &B ,const Pds::Matrix &C, double var);
455
485 Matrix(double (*func)(double,double,double),
486 const Pds::Matrix &X,
487 const Pds::Matrix &Y,
488 const Pds::Matrix &Z);
489
521 Matrix(double (*func)(double,double,double,double),
522 const Pds::Matrix &X,
523 const Pds::Matrix &Y,
524 const Pds::Matrix &Z,
525 double var);
526
558 Matrix(double (*func)(double,double,double,double),
559 const Pds::Matrix &X,
560 const Pds::Matrix &Y,
561 const Pds::Matrix &Z,
562 const Pds::Matrix &W);
563
580 Matrix(Pds::Ra::FormatType Type,std::string filepath);
581
582
600 Matrix(const std::vector<Pds::Point2D> &P);
601
619 Matrix(const std::vector<Pds::Position> &P);
620
647 template <class Datum>
648 Matrix(const std::vector<Datum> &P);
649
679 template <class Datum>
680 Matrix(unsigned int Nlin, unsigned int Ncol, const std::vector<Datum> &P);
681
707 template <class Datum>
708 Matrix(const std::initializer_list<Datum> &list);
709
711
716public:
717
729 bool IsEmpty(void) const;
730
737 bool IsNotEmpty(void) const;
738
739
748 bool IsSimilarTo(const Pds::Matrix &B) const;
749
758 bool IsNotSimilarTo(const Pds::Matrix &B) const;
759
768 bool IsMulBy(const Pds::Matrix &B) const;
769
778 bool IsNotMulBy(const Pds::Matrix &B) const;
779
790 bool IsInRange(unsigned int lin,unsigned int col) const;
791
802 bool IsNotInRange(unsigned int lin,unsigned int col) const;
803
814 bool IsInSizeRange(double lin,double col) const;
815
816
824 bool IsRowMatrix(void) const;
825
826
834 bool IsColMatrix(void) const;
835
852 bool IsZero(void) const;
853
863 bool IsLeq(double val) const;
864
874 bool IsLeq(const Pds::Matrix &B) const;
875
885 bool IsGeq(double val) const;
886
896 bool IsGeq(const Pds::Matrix &B) const;
897
907 bool IsEqualTo(double val) const;
908
918 bool IsEqualTo(const Pds::Matrix &B) const;
919
920
930 bool HasLeq(double val) const;
931
941 bool HasGeq(double val) const;
942
943
958 bool HasInf(void) const;
959
974 bool HasNan(void) const;
975
976
990 bool HasNotFinite(void) const;
991
992
997public:
998
1015 bool FillRandC(double p1);
1016
1029 bool FillRandN(void);
1030
1045 bool FillRandN(double U, double Sigma);
1046
1059 bool FillRandU(void);
1060
1075 bool FillRandU(int a, int b);
1076
1091 bool FillRandU(double a, double b);
1092
1107 bool FillId(void );
1108
1116 bool FillBcd(unsigned int n);
1117
1125
1141 bool Fill(double val);
1142
1170 template <class Datum>
1171 bool Fill(const std::vector<Datum> &P);
1172
1191 bool FillLinSpace(double a,double b);
1196public:
1197
1207 unsigned int Nlin(void) const;
1208
1213 unsigned int Ncol(void) const;
1214
1219 unsigned int Nel(void) const;
1220
1225 Pds::Size Size(void) const;
1226
1231 unsigned int LinEnd(void) const;
1232
1237 unsigned int ColEnd(void) const;
1238
1243 unsigned int End(void) const;
1244
1245
1250public:
1251
1266 double Get(unsigned int id) const;
1267
1276 double Get(unsigned int lin,unsigned int col) const;
1277
1285 Pds::Vector Get(const std::vector<Pds::Position> &P) const;
1286
1294 double Get(const Pds::Position &P) const;
1295
1296
1305 const double &GetRaw(unsigned int lin,unsigned int col) const
1306 {
1307 return this->array[lin][col];
1308 }
1309
1310
1319 void SetRaw(unsigned int lin,unsigned int col,const double &val)
1320 {
1321 this->array[lin][col]=val;
1322 }
1323
1332 bool Set(unsigned int id,double val);
1333
1343 bool Set(unsigned int lin,unsigned int col,double val);
1344
1353 double &In(unsigned int lin,unsigned int col);
1354
1362 double &In(unsigned int id);
1363
1364
1376 double Bilinear(double lin,double col) const;
1377
1382public:
1383
1395
1405
1412 bool SetDiagonal(double val);
1413
1424 Pds::Matrix GetMatrix(unsigned int lin_init,unsigned int col_init,unsigned int lin_end,unsigned int col_end) const;
1425
1435 Pds::Matrix GetMatrix(unsigned int lin_init,unsigned int col_init,Pds::Size size) const;
1436
1447 bool SetMatrix(unsigned int lin,unsigned int col,const Pds::Matrix &B);
1448
1455 Pds::Matrix GetRow(unsigned int lin) const;
1456
1465 bool GetRow(unsigned int lin,Pds::Matrix &Row) const;
1466
1473 Pds::Vector GetRowAsColVector(unsigned int lin) const;
1474
1482 bool GetRowAsColVector(unsigned int lin,Pds::Vector &V) const;
1483
1494 bool GetRows(unsigned int lin_init,unsigned int lin_end, Pds::Matrix &B) const;
1495
1504 Pds::Matrix GetRows(unsigned int lin_init,unsigned int lin_end) const;
1505
1512 Pds::Matrix GetRows(std::list<unsigned int> List) const;
1513
1520 Pds::Matrix GetRows(std::vector<unsigned int> Vec) const;
1521
1530 Pds::Matrix GetRowsRand(unsigned int N) const;
1531
1538 Pds::Matrix GetCol(unsigned int col) const;
1539
1540
1549 bool GetCol(unsigned int col,Pds::Matrix &MatCol) const;
1550
1557 Pds::Vector GetColVector(unsigned int col) const;
1558
1565 bool GetColVector(unsigned int col, Pds::Vector &U) const;
1566
1575 Pds::Matrix GetCols(unsigned int col_init,unsigned int col_end) const;
1576
1583 Pds::Matrix GetCols(std::list<unsigned int> List) const;
1584
1591 Pds::Matrix GetCols(const std::initializer_list<unsigned int> List) const;
1592
1599 Pds::Matrix GetCols(std::vector<unsigned int> Vec) const;
1600
1609 Pds::Matrix GetColsRand(unsigned int N) const;
1610
1618 bool SetRowValue(unsigned int lin,double value);
1619
1627 bool SetRowVector(unsigned int lin,const Pds::Vector &X);
1628
1636 bool SetColValue(unsigned int col,double value);
1637
1647 bool SetColVector(unsigned int col,const Pds::Vector &V);
1648
1660 bool SetColVector(unsigned int col,double (*func)(double),const Pds::Vector &V);
1661
1674 bool SetColVector(unsigned int col,double (*func)(double,double),const Pds::Vector &V,double var);
1675
1682 std::vector<Pds::Point2D> GetPoint2DsFromCols(unsigned int colx,unsigned int coly) const;
1683
1688 std::vector<double> ToStdVector(void) const;
1694public:
1695
1711 bool RowAddAssig(unsigned int lin1,unsigned int lin2,double alpha);
1712
1721 bool RowMulAssig(unsigned int lin,double alpha);
1722
1731 bool RowDivAssig(unsigned int lin,double alpha);
1732
1739 bool RowSwap(unsigned int lin1,unsigned int lin2);
1740
1751 int RowSwapBelow(unsigned int n);
1752
1760 bool RowReduction(void);
1761
1762
1770 bool RowDivByAbsMax(void);
1771
1772
1778public:
1779
1790 std::map<int,unsigned int> IntegerCount(void) const;
1791
1797 std::set<int> IntegerSet(void) const;
1798
1805 double MultiplyValues(void) const;
1806
1813 double Sum(void) const;
1814
1821 double Mean(void) const;
1822
1823
1831
1832
1839
1840
1847 double Std(double *mean=NULL) const;
1848
1855
1862
1874
1875
1887
1894 double Var(double *mean=NULL) const;
1895
1896
1904 double Max(unsigned int *id=NULL) const;
1905
1906
1914 double Min(unsigned int *id=NULL) const;
1915
1916
1924 double MaxAbs(unsigned int *id=NULL) const;
1925
1933 double MinAbs(unsigned int *id=NULL) const;
1934
1942
1950
1958 Pds::Matrix MaxInCols(std::vector<unsigned int> &Lin) const;
1959
1967 Pds::Matrix MinInCols(std::vector<unsigned int> &Lin) const;
1968
1977
1986
1987
1994
2001
2008
2015
2022
2023
2031
2039
2055
2071
2072
2080 long int CountRoundEqualIn(const Pds::Matrix &B) const;
2081
2097 double Accuracy(const Pds::Matrix &B,double Umbral) const;
2098
2099
2112 double NAccuracy(const Pds::Matrix &B) const;
2113
2114
2125 double R2(const Pds::Matrix &Y) const;
2126
2138 double Rf(const Pds::Matrix &Y) const;
2139
2150 double Mape(const Pds::Matrix &B) const;
2156public:
2157
2176 double InformationGain(const std::vector<Pds::Matrix> &A,double Umbral=0.5) const;
2177
2178
2194 double BinaryEntropy(double umbral) const;
2195
2207 double P1Probability(double umbral) const;
2208
2216 Pds::Matrix BalancedBinaryWeight(double umbral) const;
2217
2218
2224public:
2225
2244 Pds::Vector HistogramIntNorm(int min=0,int max=255) const;
2245
2265 Pds::Vector Histogram(double min,double max, unsigned int L) const;
2266
2278 Pds::Vector Histogram(unsigned int L) const;
2279
2291 double Corr(const Pds::Matrix &B) const;
2292
2304 double Cov(const Pds::Matrix &B) const;
2305
2343
2395
2438 Pds::Matrix XCorr(const Pds::Matrix &B, bool Same=false) const;
2439
2440
2516
2517
2599 const Pds::Size &B,
2600 const std::vector<unsigned int> &Strides,
2602
2685 const std::vector<unsigned int> &Strides={1,1},
2687
2771 bool Conv2D(const Pds::Matrix &B,
2772 Pds::Matrix &C,
2773 const std::vector<unsigned int> &Strides={1,1},
2775
2787 Pds::Matrix MaxPooling( unsigned int LinPool,unsigned int ColPool ) const;
2788
2808 Pds::Matrix FilterMean(unsigned int r) const;
2809
2810
2828
2829
2845 Pds::Matrix Resize(double factor) const;
2846
2852public:
2853
2901 bool QR( Pds::Matrix &Q, Pds::Matrix &R) const;
2902
2915
2928
2981
2990 Pds::Matrix SubLambdaI(double lambda) const;
2991
3000 Pds::Matrix AddLambdaI(double lambda) const;
3001
3002
3012 double QuadraticForm(const Pds::Vector &x) const;
3013
3053
3054
3093
3133 Pds::Matrix QuadraticFormWithSamples(const std::vector<Pds::Matrix> &X,const Pds::Vector &Mu) const;
3134
3174
3182 double MaxAbsOfLowerTriangular(void) const;
3183
3192 double MaxAbsOfDiag(void) const;
3193
3202 double MinAbsOfDiag(void) const;
3203
3211 double MinOfDiag(void) const;
3212
3220 double Det(void) const;
3221
3230 double Dot(const Pds::Matrix &B) const;
3231
3239 double RMS(void) const;
3240
3241
3249 double MeanAbsolute(void) const;
3250
3258 double MeanSquare(void) const;
3259
3260
3261
3274 double MSE(const Pds::Matrix &B) const;
3275
3289 double RMSE(const Pds::Matrix &B) const;
3290
3308 double PSNR(const Pds::Matrix &B,unsigned int NBITS) const;
3309
3317 double SumSquare(void) const;
3318
3319
3326
3334 double NormDiff(const Pds::Matrix &B) const;
3335
3343 double NormDiff2(const Pds::Matrix &B) const;
3344
3352 double Norm(void) const;
3353
3361 double PNorm1(void) const;
3362
3363
3371 double PNormInf(void) const;
3372
3379 bool Normalize(void);
3380
3387 bool NormalizeRows(void);
3388
3405public:
3406
3449 Pds::Vector EigenValues( unsigned int MaxIter=2048, double MinFactor=0.00001, bool SortAsc=true) const;
3450
3451
3474 unsigned int MaxIter=20000,
3475 bool EmptyWhenError=true) const;
3476
3533 const Pds::Vector &v0,
3534 unsigned int MaxIter=20000,
3535 bool EmptyWhenError=true) const;
3536
3537
3574 Pds::Vector EigenDominant(double &lambda,unsigned int MaxIter=20000) const;
3575
3581public:
3582
3594 std::vector<unsigned int> Find(void) const;
3595
3602 std::vector<unsigned int> FindIdOfKMin(unsigned int K) const;
3603
3611 std::vector<unsigned int> FindIdOfKMin(unsigned int K,std::vector<double> &dat) const;
3612
3622 Pds::Matrix FindRows(const Pds::Vector &B,double b=0.5) const;
3623
3632 Pds::Matrix FindVal(double val) const;
3633
3641 bool FindValAndReplace(double val, double rep);
3642
3651 std::vector<Pds::Matrix> FindRowsBlock(const Pds::Vector &V)const;
3652
3663 std::vector<Pds::Matrix> FindRowsBlock(const Pds::Vector &V,std::vector<int> &Label)const;
3664
3665
3676 std::vector<Pds::Matrix> FindRowsBlock(const Pds::Array<unsigned int> &ID) const;
3677
3683public:
3684
3699 bool Apply( const Pds::Matrix &B);
3700
3711 bool Apply( double Alpha, const Pds::Matrix &B);
3712
3720 bool Apply( double (*func)(double) );
3721
3732 bool Apply( double (*func)(double),const Pds::Matrix &B);
3733
3742 bool Apply( double (*func)(double,double), double var);
3743
3744
3753 bool Apply( double (*func)(double,const std::vector<double> &),const std::vector<double> &var);
3754
3768 bool ApplyAdd( double (*func)(double),double alpha,const Pds::Matrix &B,double beta, const Pds::Matrix &C);
3769
3782 bool ApplyAdd(double alpha,const Pds::Matrix &B,double beta, const Pds::Matrix &C);
3783
3795 bool ApplySub( double (*func)(double),const Pds::Matrix &B,const Pds::Matrix &C);
3796
3807 bool ApplySub(const Pds::Matrix &B,const Pds::Matrix &C);
3808
3819 bool ApplyProduct(const Pds::Matrix &B,const Pds::Matrix &C);
3820
3829 bool ApplyInCol(unsigned int col, double (*func)(double) );
3830
3840 bool ApplyInCol(unsigned int col, double (*func)(double,double), double var);
3841
3842
3848public:
3849
3890 Pds::Matrix OperateRows(double (*func)(const Pds::Matrix &Row)) const;
3891
3927 Pds::Matrix OperateRows(double (*func)(const Pds::Vector &Row)) const;
3928
3965 Pds::Matrix OperateRows(double (*func)(const Pds::Vector &Row,const Pds::Vector &C),
3966 const Pds::Vector &C) const;
3967
4005 Pds::Matrix OperateRows(double (*func)(const Pds::Vector &Row,const Pds::Vector &C,const std::vector<double> &var),
4006 const Pds::Vector &C,
4007 const std::vector<double> &var) const;
4008
4033 Pds::Matrix OperateCols(double (*func)(const Pds::Matrix &Col)) const;
4034
4059 Pds::Matrix OperateCols(double (*func)(const Pds::Vector &Col)) const;
4060
4061
4087 Pds::Matrix OperateCols(double (*func)(const Pds::Vector &Col,const Pds::Vector &C),
4088 const Pds::Vector &C) const;
4089
4090
4128 const Pds::Vector &C) const;
4129
4137 Pds::Matrix Scale(double minval,double maxval) const;
4138
4145 Pds::Matrix Round(unsigned int decimal=0) const;
4150public:
4151
4168 bool CopyRegion(const Pds::RegionRect &Rin,const Pds::RegionRect &Rout,Pds::Matrix &Mout) const;
4169
4176 bool InitRegion(Pds::RegionRect R,double val);
4177
4183
4200 bool MeanOfRegion(const Pds::RegionRect &Rin, double *mean) const;
4201
4217 double MeanOfRegion(const Pds::RegionRect &Rin) const;
4218
4235 bool MeanSquareOfRegion(const Pds::RegionRect &Rin, double *mean) const;
4236
4252 double MeanSquareOfRegion(const Pds::RegionRect &Rin) const;
4253
4271 bool StdAndMeanOfRegion(const Pds::RegionRect &Rin, double *std, double *mean) const;
4272
4273
4293 const Pds::RegionRect &R0,
4294 const Pds::RegionRect &R1,
4295 double *corrn) const;
4296
4318 const Pds::RegionRect &R0,
4319 const Pds::RegionRect &R1,
4320 double means0,
4321 double means1,
4322 double *corrn) const;
4323
4357 const Pds::RegionRect &R0,
4358 const Pds::RegionRect &R1,
4359 double *pcc) const;
4360
4398 const Pds::RegionRect &R0,
4399 const Pds::RegionRect &R1,
4400 double mean0,
4401 double mean1,
4402 double std0,
4403 double std1,
4404 double *pcc) const;
4409public:
4410
4421 std::string ToString(void) const;
4422
4428 std::string ToString(const std::string &EndData) const;
4429
4436 void Print(const std::string &str,unsigned int precision) const;
4437
4443 void Print(const std::string &str) const;
4444
4448 void Print(void) const;
4449
4454public:
4455
4468 void MakeEmpty(void);
4469
4478 bool Reshape(unsigned int Nlin,unsigned int Ncol);
4479
4488 Pds::Matrix Remodel(unsigned int Nlin,unsigned int Ncol);
4489
4490
4500 bool FusionVer(std::list<Pds::Matrix> &list);
4501
4502
4508public:
4509
4530 bool SaveInStream(std::ofstream &myfile) const;
4531
4562 bool LoadFromStream(std::ifstream &ifs,unsigned int Nlin,unsigned int Ncol);
4563
4587 bool LoadLineFromStream(std::ifstream &ifs);
4588
4604 bool Save(const std::string &filepath) const;
4605
4632 bool Load(const std::string &filepath);
4633
4634
4640public:
4641
4667 bool ExportCsvFile(const std::string &filepath,char delimitador=',') const;
4668
4669
4690 bool ExportCsvFile(const std::string &filepath,std::vector<std::string> titles,char delimitador=',') const;
4691
4692
4723 bool ImportCsvFile(const std::string &filepath,char delimitador,std::vector<std::string> &titles);
4724
4725
4754 bool ImportCsvFileWithoutTitles(const std::string &filepath,char delimitador);
4755
4756
4762public:
4763
4800 bool ExportTexFile( const std::string &filepath,
4801 const std::vector<std::string> &titles,
4802 const std::vector<std::string> &rowtitles,
4803 const std::string &caption="My caption",
4804 const std::string &label="mylabel") const;
4805
4835 bool ExportTexFile( const std::string &filepath,
4836 const std::vector<std::string> &titles,
4837 const std::string &caption="My caption",
4838 const std::string &label="mylabel") const;
4839
4840
4870 bool ExportTexFile( const std::string &filepath,
4871 const std::string &caption="My caption",
4872 const std::string &label="mylabel") const;
4873
4874public:
4875
4899 bool ExportJsonToStream(std::ofstream &myfile) const;
4900
4920 bool ExportJsonToStream(std::ofstream &myfile, unsigned int ntabs) const;
4921
4940 std::string ExportJsonToString(unsigned int ntabs) const;
4941
4958 Pds::Json ToJson(void) const;
4959
4977 bool FromJson(const Pds::Json &J) ;
4983public:
4984
5009 bool ExportXmlToStream(std::ofstream &myfile) const;
5010
5029 bool ExportXmlToStringStream(std::stringstream &sstream) const;
5030
5048 std::string ExportXmlToString(void) const;
5049
5081 bool ImportXmlFromString(const std::string &str);
5082
5083
5089public:
5090
5121 bool ExportMatFile(const std::string &pname,const std::string &filepath) const;
5122
5139 std::string ExportOctaveString(const std::string &pname) const;
5145public:
5146
5165 bool ExportBmpFile(const unsigned char colormap[256][3],const std::string &filepath) const;
5166
5180 bool ExportBmpFileScale(const unsigned char colormap[256][3],const std::string &filepath) const;
5186public:
5187
5204 static bool FunctionCh3ToCh3( void (*func)(double a1,double a2,double a3,double &b1,double &b2,double &b3),
5205 const Pds::Matrix &A1, const Pds::Matrix &A2, const Pds::Matrix &A3,
5206 Pds::Matrix &B1, Pds::Matrix &B2, Pds::Matrix &B3);
5212public:
5213
5225 static bool IsSampleBlock(const std::vector<Pds::Matrix> &Block);
5226
5238 static Pds::Vector FlattenSampleBlock(const std::vector<Pds::Matrix> &Block);
5239
5246 static std::vector<Pds::Matrix> RandNSampleBlock(unsigned int N,const Pds::Size &Sz);
5247
5254 static std::vector<Pds::Matrix> ZerosSampleBlock(unsigned int N,const Pds::Size &Sz);
5255
5268 static std::vector<Pds::Matrix> MaxPoolingSampleBlock( const std::vector<Pds::Matrix> &A,
5269 unsigned int LinPool,
5270 unsigned int ColPool);
5271
5281 static Pds::Matrix MeanSampleBlock( const std::vector<Pds::Matrix> &Block);
5282
5283
5291 static Pds::Matrix GetSamples(const std::vector<Pds::Matrix> &Block);
5292
5306 static bool GetSampleRaw(const std::vector<Pds::Matrix> &Block, unsigned int lin, unsigned int col,Pds::Vector &x);
5307
5320 static bool GetSampleRaw(const std::vector<Pds::Matrix> &Block, unsigned int id,Pds::Vector &x);
5321
5330 static Pds::Matrix GetSamples(const std::vector<Pds::Matrix> &Block,const std::vector<unsigned int> Id);
5331
5332
5346 static std::vector<Pds::Matrix> ImportBmpFile( const std::string &bmpfilename);
5347
5358 static Pds::Matrix ImportBmpFileAsGray( const std::string &bmpfilename);
5359
5370 static bool ExportBmpFile( const Pds::Matrix &R,
5371 const Pds::Matrix &G,
5372 const Pds::Matrix &B,
5373 const std::string &bmpfilename);
5374
5383 static bool ExportAsGif(const std::vector<Pds::Matrix> &Block,
5384 const std::string &filename,
5385 unsigned int delay=100,
5386 const unsigned char colormap[256][3]=Pds::Colormap::Gray);
5387
5418 static std::string ExportSampleBlockXmlToString(const std::vector<Pds::Matrix> &Block);
5419
5420
5460 static std::vector<Pds::Matrix> ImportSampleBlockXmlFromString(const std::string &str);
5461
5493 static bool ExportSampleBlockXmlToStream(std::ofstream &myfile,const std::vector<Pds::Matrix> &Block);
5494
5500public:
5501
5514 static bool IsBatchBlock(const std::vector<std::vector<Pds::Matrix>> &Tensor);
5515
5524 static std::vector<std::vector<Pds::Matrix>> RandNBatchBlock(unsigned int L, unsigned int N,const Pds::Size &Sz);
5525
5534 static std::vector<std::vector<Pds::Matrix>> ZerosBatchBlock(unsigned int L, unsigned int N,const Pds::Size &Sz);
5535
5555 static std::string ExportBatchBlockXmlToString(const std::vector<std::vector<Pds::Matrix>> &Block);
5556
5584 static std::vector<std::vector<Pds::Matrix>> ImportBatchBlockXmlFromString(const std::string &str);
5585
5586
5607 static bool ExportBatchBlockXmlToStream(std::ofstream &myfile,const std::vector<std::vector<Pds::Matrix>> &Block);
5608
5614public:
5615
5626 static Pds::Matrix FromString(const std::string &str);
5627
5633public:
5634
5658 Pds::Matrix T(void) const;
5659
5677 Pds::Matrix MtM(void) const;
5678
5679
5700 Pds::Matrix MtM(const Pds::Matrix &B) const;
5701
5719 Pds::Matrix MMt(void) const;
5720
5721
5742 Pds::Matrix MMt(const Pds::Matrix &B) const;
5743
5760 Pds::Matrix Inv(double *rcond=NULL) const;
5761
5779 Pds::Matrix PInv(double *rcond=NULL) const;
5780
5781
5801
5820 Pds::Matrix Minus(void) const;
5821
5841
5860 Pds::Matrix Plus(void) const;
5892 Pds::Matrix operator * (double b) const;
5893
5917
5937 Pds::Matrix Mul(double b) const;
5938
5960 Pds::Matrix Mul(const Pds::Matrix &B) const;
5961
5984 bool Mul(const Pds::Matrix &B, Pds::Matrix &Out) const;
5985
6007 Pds::Matrix Mul(const Pds::Vector &B) const;
6008
6009
6033
6056 Pds::Matrix MulComp(double b,const Pds::Vector &B) const;
6057
6080 Pds::Matrix CompMul(double b,const Pds::Matrix &B) const;
6081
6105 bool MulComp(double b,const Pds::Vector &B, Pds::Vector &Out) const;
6106
6130 bool MulComp(double b,const Pds::Matrix &B, Pds::Matrix &Out) const;
6131
6132
6155
6178
6179
6201 Pds::Matrix operator + (double b) const;
6202
6227
6248 Pds::Matrix Add(double b) const;
6249
6272 Pds::Matrix Add(const Pds::Matrix &B) const;
6273
6274
6296 Pds::Matrix operator - (double b) const;
6297
6320
6341 Pds::Matrix Sub(double b) const;
6342
6364 Pds::Matrix Sub(const Pds::Matrix &B) const;
6365
6366
6390
6414
6435 Pds::Matrix operator / (double b) const;
6436
6437
6460
6480 Pds::Matrix Div(double b) const;
6481
6503 Pds::Matrix Div(const Pds::Matrix &B) const;
6504
6528
6529
6549 Pds::Matrix DivBelow(double b) const;
6550
6585
6608
6632 Pds::Matrix Product(double (*func)(double),const Pds::Matrix &B) const;
6633
6634
6656 Pds::Matrix Pow(const Pds::Matrix &B) const;
6657
6658
6679 Pds::Matrix Pow(double val) const;
6680
6681
6702 Pds::Matrix GreaterThan(double b) const;
6703
6724 Pds::Matrix Geq(double b) const;
6725
6746
6766 Pds::Matrix Leq(double b) const;
6767
6787 Pds::Matrix Leq(const Pds::Matrix &B) const;
6788
6789
6809 Pds::Matrix EqualTo(double b) const;
6810
6831
6851 Pds::Matrix NotEqualTo(double b) const;
6852
6873
6874
6897
6920
6942
6965 Pds::Matrix Xor(const Pds::Matrix &B,double Umbral=0.5) const;
6966
6989 Pds::Matrix And(const Pds::Matrix &B,double Umbral=0.5) const;
6990
7013 Pds::Matrix Or(const Pds::Matrix &B,double Umbral=0.5) const;
7014
7019public:
7020
7043
7061
7076 bool SubAssig(double b);
7077
7093 bool SubAssig(const Pds::Matrix &B);
7094
7095
7112 bool SubAssig(double beta, const Pds::Matrix &B);
7113
7130
7148
7162 bool AddAssig(double b);
7163
7179 bool AddAssig(const Pds::Matrix &B);
7180
7197
7214 bool AddAssig(double alpha, const Pds::Matrix &B);
7215
7216
7235 bool AddAssig(double alpha, double beta, const Pds::Matrix &B);
7236
7257 bool AddAssig(double alpha, const Pds::Matrix &B, double beta, const Pds::Matrix &C);
7258
7277 bool AddAssigAt(unsigned int lin,unsigned int col,const Pds::Matrix &B);
7278
7295 bool AddAssigAt(unsigned int lin,unsigned int col,double b);
7296
7297
7313 void AddRawAssigAt(unsigned int lin,unsigned int col,double b)
7314 {
7315 this->array[lin][col]=this->array[lin][col]+b;
7316 }
7317
7334 bool XorAssig(const Pds::Matrix &B,double Umbral=0.5);
7335
7355 bool XorAssigAt(unsigned int lin,unsigned int col,const Pds::Matrix &B,double Umbral=0.5);
7356
7376 bool OrAssigAt(unsigned int lin,unsigned int col,const Pds::Matrix &B,double Umbral=0.5);
7377
7397 bool AndAssigAt(unsigned int lin,unsigned int col,const Pds::Matrix &B,double Umbral=0.5);
7398
7399
7418 bool XorAssigVectorAtCol(unsigned int col,const Pds::Vector &B,double Umbral=0.5);
7419
7420
7439 bool ProductAssig(double b);
7440
7462
7484 bool ProductAssig(double (*func)(double),const Pds::Matrix &B);
7485
7507 bool ProductAssigMinus(double b, const Pds::Matrix &B);
7508
7509
7531 bool ProductAssigMinus(const Pds::Matrix &B,double b);
7532
7554 bool ProductAssigPlus(double b, const Pds::Matrix &B);
7555
7572
7589
7603 bool MulAssig(double b);
7604
7619 bool MulAssig(const Pds::Matrix &B);
7620
7621
7638
7639
7654 bool DivAssig(const Pds::Matrix &B);
7655
7668 bool DivBelowAssig(double b);
7669
7670
7693
7706 bool Copy(const Pds::Matrix &B);
7707
7708
7709
7732
7745 bool Copy(double val);
7746
7765 template <class Datum>
7767
7779 template <class Datum>
7780 bool Copy(const Pds::Array<Datum> &B);
7781
7782
7862 std::vector<unsigned int>
7863 KNearest( unsigned int K,
7864 const Pds::Vector &V,
7865 std::vector<double> &D2) const;
7866
7924 std::vector<unsigned int>
7925 KNearest( unsigned int K,
7926 const Pds::Vector &V) const;
7927
7928
7982
8024 Pds::Array<unsigned int> IdInMultipleMse(const std::vector<Pds::Matrix> &Block) const;
8025
8026
8032public:
8033
8046 static double** ArrayAllocate(double (*func)(double),const Pds::Matrix &A);
8047
8057 static double** ArrayAllocate(double (*func)(double,double),const Pds::Matrix &A,double var);
8058
8069 static double** ArrayAllocate(double (*func)(double,double),const Pds::Matrix &A,const Pds::Matrix &B);
8070
8082 static double** ArrayAllocate(double (*func)(double,double,double),const Pds::Matrix &A,const Pds::Matrix &B,double var);
8083
8095 static double** ArrayAllocate(double (*func)(double,double,double),
8096 const Pds::Matrix &A,
8097 const Pds::Matrix &B,
8098 const Pds::Matrix &C);
8099
8112 static double** ArrayAllocate(double (*func)(double,double,double,double),
8113 const Pds::Matrix &A,
8114 const Pds::Matrix &B,
8115 const Pds::Matrix &C,
8116 double var);
8117
8130 static double** ArrayAllocate(double (*func)(double,double,double,double),
8131 const Pds::Matrix &A,
8132 const Pds::Matrix &B,
8133 const Pds::Matrix &C,
8134 const Pds::Matrix &D);
8135
8141};// class Matrix
8142
8147typedef std::vector<Pds::Matrix> SampleBlock;
8148
8153typedef std::vector<std::vector<Pds::Matrix>> BatchBlock;
8154
8155} // namespace Pds
8156
8157
8158
8159
8179std::ostream& operator<<(std::ostream &out,const Pds::Matrix &mat);
8180
8204
8228
8252
8276
8285#endif
8286
La clase tipo Pds::AbstractRV . Esta es una clase abstracta para toda la familia de random variables....
Definition: AbstractRV.hpp:55
La clase tipo Array . Esta clase genera una agrupación de 2 datos. Para usar incluir Pds/Array.
Definition: Array.hpp:71
La clase tipo Pds::Json . Esta clase genera una estructura capaz de almacenar datos del formato Json....
Definition: Json.hpp:63
La clase tipo Pds::Matrix . Esta clase genera una matriz de Nlin lineas y Ncol columnas....
Definition: Matrix.hpp:96
unsigned int nlin
Definition: Matrix.hpp:101
friend class CMatrix
Definition: Matrix.hpp:105
double ** array
Definition: Matrix.hpp:99
friend class CVector
Definition: Matrix.hpp:106
unsigned int ncol
Definition: Matrix.hpp:103
La estructura tipo Pds::Position . Esta estructura genera una posicion. Para usar incluir <Pds/Positi...
Definition: Position.hpp:62
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:57
La clase tipo Pds::Vector . Esta clase genera una matriz de Nlin lineas y 1 columna....
Definition: Vector.hpp:80
FormatType
Tipo de dato en la carga de información desde archivo.
Definition: RaDefines.hpp:370
Padding
Tipo de dato que especifica el padding en la convolucion.
Definition: RaDefines.hpp:346
bool IsEqualTo(const Pds::Matrix &B) const
Verifica si cada elemento de la matriz es igual a cada elemento de la matriz B.
bool ProductAssigMinus(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 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...
Pds::Vector Histogram(unsigned int L) const
Retorna un vector con um histograma de elementos espaciados . Elementos con valores menores a o may...
Pds::Vector EigenVector_RegInvIter(double lambda, const Pds::Vector &v0, unsigned int MaxIter=20000, bool EmptyWhenError=true) const
Calcula un autovector (Eigenvector) de una matriz . Internamente usa version regularizada del algorit...
Matrix(unsigned int N)
Crea un objeto de tipo Pds::Matrix de N lineas y N columnas, con elementos inicializados con cero.
std::vector< Pds::Matrix > FindRowsBlock(const Pds::Vector &V) const
Retorna un vector de matrices con las lineas donde existe un mismo id en el vector ....
bool SetRowValue(unsigned int lin, double value)
Copia un valor en una linea de la matriz.
bool ProductAssig(double b)
Multiplica con sigo mismo (A), un valor b y el resultado es cargado en A.
double MinOfDiag(void) const
Retorna el valor mínimo de la diagonal de una matriz cuadrada .
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 ...
Pds::Matrix CholeskyCrout(void) const
Dada una matriz simétrica definida positiva , este método realiza la descomposición Cholesky,...
Pds::Matrix Xor(const Pds::Matrix &B, double Umbral=0.5) const
[Elemento a elemento] Xor con sigo mismo (A), una matriz B y el resultado es cargado en C.
bool FillBcd(unsigned int n)
Escribe un número en digital codificado en binário (BCD), escribe primero en una columna entera y lue...
bool Apply(double Alpha, const Pds::Matrix &B)
Aplica la función func a cada elemento de la matriz. La matriz que recibe debe tener el mismo tamaño ...
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::Vector EigenValues(unsigned int MaxIter=2048, double MinFactor=0.00001, bool SortAsc=true) const
Calcula los valores própios (Eigenvalues) de una matriz siguiendo el algoritmo shift QR,...
bool SubAssig(double beta, const Pds::Matrix &B)
Resta y acumula en si mismo (A), una matriz B. Este es similar al operador -=.
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::Vector MultiIndex(const Pds::Vector &d) const
Dada una matriz es calculado el vector .
Pds::Matrix Resize(double factor) const
Retorna una matriz B (size: NlinB,NcolB) resultado de aplicar un subsampling de la matriz A (size: Nl...
static std::vector< Pds::Matrix > ImportSampleBlockXmlFromString(const std::string &str)
Carga el contenido de una std::vector<Pds::Matrix> desde un std::string en formato Xml.
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.
static std::string ExportBatchBlockXmlToString(const std::vector< std::vector< Pds::Matrix > > &Block)
Retorna un std::string en formato Xml con el contenido del BatchBlock.
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 desde un archivo una matriz de Nlin lineas y Ncol columnas.
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 y , la probabilidade de unos y ceros en la matriz d...
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),...
Pds::Matrix MaxPooling(unsigned int LinPool, unsigned int ColPool) const
Aplica max pooling de la matriz de lineas y columnas.
bool SaveInStream(std::ofstream &myfile) const
Escribe en un archivo de texto el contenido de la matriz.
double QuadraticForm(const Pds::Vector &x) const
Calcula la forma cuadrática .
bool Normalize(void)
Normaliza la matriz convirtiendolo en una matriz unitaria.
bool IsGeq(double val) const
Verifica si cada elemento de la matriz es mayor a el valor val.
std::vector< unsigned int > KNearest(unsigned int K, const Pds::Vector &V) const
Calcula que linea de es mas cercana al vector .
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::Vector HistogramIntNorm(int min=0, int max=255) const
Retorna un vector con el histograma de elementos, desde min hasta max (valores enteros)....
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::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....
bool AddAssig(double alpha, double beta, const Pds::Matrix &B)
Suma y acumula en si mismo (A), una matriz B.
Pds::Vector ArgMinInRows(void) const
Retorna un vector con el ID del mínimo valor de cada linea.
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 ...
Pds::Matrix MaxInCols(void) const
Calcula el máximo en cada columna de la matriz.
Pds::Vector GetColVector(unsigned int col) const
Retorna un vector columna copia de una columna de la matriz.
Pds::Vector EigenDominant(double &lambda, unsigned int MaxIter=20000) const
Calcula el autovector (Eigenvector) y el autovalor (Eigenvalue) dominante en una matriz ....
Pds::Vector Get(const std::vector< Pds::Position > &P) const
Retorna el valor en las posiciones P[n]. Hace una verificación si la posiciones existen.
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....
Matrix(const Pds::Size &S, double val)
Crea un objeto de tipo Pds::Matrix con elementos inicializados con val.
Pds::Vector GetRowAsColVector(unsigned int lin) const
Retorna un vector columna copia de una linea de la matriz.
void AddRawAssigAt(unsigned int lin, unsigned int col, double b)
Suma y acumula en si mismo (A), un valor b en un punto (lin,col)
Definition: Matrix.hpp:7313
Pds::Matrix OperateRows(double(*func)(const Pds::Vector &Row, const Pds::Vector &C), const Pds::Vector &C) const
Opera la función func usando como entrada cada fila 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...
Pds::Matrix DivRowMatrix(const Pds::Matrix &B) const
[Elemento a elemento] Divide con sigo mismo (A), una matriz B linea y el resultado es cargado en C....
bool GetCol(unsigned int col, Pds::Matrix &MatCol) const
Retorna una matriz columna escojida en la columna col. Hace una verificación si la columna existe y t...
Pds::Matrix MaxAbsInCols(void) const
Retorna una matriz con el máximo valor absoluto de cada columna.
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.
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...
static bool IsSampleBlock(const std::vector< Pds::Matrix > &Block)
Verifica que el bloque (std::vector<Pds::Matrix>) sea un vector no vacío de matrices no nulas y simil...
bool ApplySub(const Pds::Matrix &B, const Pds::Matrix &C)
Aplica a cada elemento de la diferencia de matrices. La matriz que recibe debe tener el mismo tamaño ...
Pds::Json ToJson(void) const
Retorna un objeto Pds::Json con el contenido de la matriz.
double Mean(void) const
Calcula el valor medio de la matriz.
bool AddAssigColMatrix(const Pds::Matrix &B)
Suma y acumula en si mismo (A) e en cada columna, una matriz columna B.
Pds::Matrix And(const Pds::Matrix &B, double Umbral=0.5) const
[Elemento a elemento] And con sigo mismo (A), una matriz B y el resultado es cargado en C.
bool RowReduction(void)
Convierte la matriz en una matriz reducida.
bool XorAssig(const Pds::Matrix &B, double Umbral=0.5)
Xor y acumula en si mismo (A), una matriz B.
double NAccuracy(const Pds::Matrix &B) const
Calcula el valor de la Accuracy entre los elementos de las matrices A (Self) y B. Antes de comprarar ...
Matrix(unsigned int Nlin, unsigned int Ncol, const std::vector< Datum > &P)
Crea una matriz Nlin lineas y Ncol columnas usando los elementos del vector.
Pds::Matrix MaxInCols(Pds::Array< unsigned int > &Lin) const
Calcula el máximo en cada columna de la matriz.
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 ...
Pds::Matrix GetCols(const std::initializer_list< unsigned int > List) const
Retorna una sub matriz escojida desde una lista de indices de columnas. Hace una verificación si los ...
bool IsMulBy(const Pds::Matrix &B) const
Verifica si las matrices son multiplicables.
bool GetColVector(unsigned int col, Pds::Vector &U) const
Copia a un vector columna el contenido de una columna de la matriz.
Matrix(unsigned int Nlin, unsigned int Ncol)
Crea un objeto de tipo Pds::Matrix con elementos inicializados con cero.
long int CountRoundEqualIn(const Pds::Matrix &B) const
Calcula el número de elementos enteros iguales entre las matrices A y B.
bool Fill(Pds::AbstractRV &RV)
Inicializa la matriz con un valor aleatório.
Pds::Matrix TransformRows(Pds::Vector(*func)(const Pds::Vector &Row, const Pds::Vector &C), const Pds::Vector &C) const
Opera la función func usando como entrada cada fila de la matriz.
bool SubAssig(double b)
Resta y acumula en si mismo (A), un valor b. Este es similar al operador -=.
Matrix(const std::initializer_list< Datum > &list)
Crea una matriz de una columna, en esa columna estan los elementos del vector.
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...
Pds::Matrix Conv2D(const Pds::Matrix &B, const std::vector< unsigned int > &Strides={1, 1}, Pds::Ra::Padding Padding=Pds::Ra::Full) const
Calcula la convolución entre A y B.
bool IsSimilarTo(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 ...
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 MtM(const Pds::Matrix &B) const
Retorna A.T()*A cargado en B.
bool IsEqualTo(double val) const
Verifica si cada elemento de la matriz es igual a el valor val.
double Get(const Pds::Position &P) const
Retorna el valor en la posición (lin,col), hace una verificación si la posición existe.
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.
double MultiplyValues(void) const
Calcula el valor de la multiplicación de elementos en la 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....
std::ostream & operator<<(std::ostream &out, const Pds::Matrix &mat)
Retorna el contenido de la matriz por la salida estándar.
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 ExportJsonToStream(std::ofstream &myfile, unsigned int ntabs) const
Escribe en un archivo Json el contenido de la matriz.
std::vector< std::vector< Pds::Matrix > > BatchBlock
Definición de un tipo de dato Pds::BatchBlock.
Definition: Matrix.hpp:8153
bool AddAssig(const Pds::Matrix &B)
Suma y acumula en si mismo (A), una matriz B. Este es similar al perador +=.
double & In(unsigned int id)
Retorna una variable double en la posición (id) de la matriz. Hace una verificación para evitar leer ...
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...
static std::vector< Pds::Matrix > ZerosSampleBlock(unsigned int N, const Pds::Size &Sz)
Crea un bloque (std::vector<Pds::Matrix>) con matrices no nulas y similares inicializadas con Pds::Ze...
bool ApplyAdd(double alpha, const Pds::Matrix &B, double beta, const Pds::Matrix &C)
Aplica la función func a cada elemento de la suma ponderada de las matrices. La matriz que recibe deb...
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.
static bool GetSampleRaw(const std::vector< Pds::Matrix > &Block, unsigned int lin, unsigned int col, Pds::Vector &x)
Extrae una muestra de un bloque (std::vector<Pds::Matrix>) de N matrices (Pds::Matrix) de L elementos...
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.
Pds::Vector SumSquareInRows(void) const
Calcula la suma cuadrada de cada linea de la matriz.
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 ...
static Pds::Matrix ImportBmpFileAsGray(const std::string &bmpfilename)
Retorna una matriz en escala de grises, de 0 a 255.
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.
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()
static bool ExportSampleBlockXmlToStream(std::ofstream &myfile, const std::vector< Pds::Matrix > &Block)
Retorna un std::string en formato Xml con el contenido del SampleBlock.
bool ImportCsvFileWithoutTitles(const std::string &filepath, char delimitador)
Lee un archivo de texto el contenido de la matriz usando un formato Csv (Comma Separated Values).
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 ImportCsvFile(const std::string &filepath, char delimitador, std::vector< std::string > &titles)
Lee un archivo de texto el contenido de la matriz usando un formato Csv (Comma Separated Values).
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.
bool IsColMatrix(void) const
Verifica si la matriz tiene solo una columna.
double RMSE(const Pds::Matrix &B) const
Calcula valor de la raiz cuadrada del error quadrático medio (Root Mean Square Error) entre las matri...
double MeanSquare(void) const
Calcula valor quadrático medio de una matriz.
Pds::Array< unsigned int > IdInMultipleMse(const std::vector< Pds::Matrix > &Block) const
Calcula que linea de es mas cercana a cada muestra en el bloque .
double NormDiff2(const Pds::Matrix &B) const
Calcula la 2-norm al cuadrado 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....
std::vector< unsigned int > FindIdOfKMin(unsigned int K, std::vector< double > &dat) const
Retorna un vector de indices de los K menores valores en la matriz A.
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 = ....
Matrix(const std::vector< Pds::Point2D > &P)
Crea una matriz de dos columnas, en la primera columna estan los elementos X y en la segunda columna ...
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.
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 ScalingColsWith(const Pds::Vector &Mean, const Pds::Vector &Std)
Escala cada columna de la matriz usando la media y el standard deviation de cada columna 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...
Pds::Matrix CompMul(double b, const Pds::Matrix &B) const
Multiplica con sigo mismo (A), previa composición, una matriz B y el resultado es cargado en C....
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...
std::set< int > IntegerSet(void) const
Set de elementos enteros.
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 .
static bool FunctionCh3ToCh3(void(*func)(double a1, double a2, double a3, double &b1, double &b2, double &b3), const Pds::Matrix &A1, const Pds::Matrix &A2, const Pds::Matrix &A3, Pds::Matrix &B1, Pds::Matrix &B2, Pds::Matrix &B3)
Convierte elemento a elemento 3 matrices a 3 matrices.
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....
bool XorAssigAt(unsigned int lin, unsigned int col, const Pds::Matrix &B, double Umbral=0.5)
Xor y acumula en si mismo (A), una matriz B desde un punto (lin,col) haciendo una intersección.
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 ...
Matrix(const std::vector< Datum > &P)
Crea una matriz de una columna, en esa columna estan los elementos del vector.
Pds::Matrix MtM(void) const
Retorna A.T()*A cargado en B.
bool HasGeq(double val) const
Verifica si existe al menos un elemento de la matriz mayor o igual a el valor val.
bool IsInRange(unsigned int lin, unsigned int col) const
Verifica si la posición pertenece a la matriz.
Pds::Matrix HessenbergReduction(void) const
Dada una matriz , este metodo retorna una Matriz de Hessenberg ( ) semejante a la matriz ....
bool ExportXmlToStringStream(std::stringstream &sstream) const
Escribe en un std::stringstream en formato Xml 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...
double Max(unsigned int *id=NULL) const
Calcula el máximo valor de la matriz.
Pds::Matrix StdInCols(void) const
Calcula el standard deviation de cada columna de la matriz.
bool OrAssigAt(unsigned int lin, unsigned int col, const Pds::Matrix &B, double Umbral=0.5)
Or y acumula en si mismo (A), una matriz B desde un punto (lin,col) haciendo una intersección.
double MinAbs(unsigned int *id=NULL) const
Calcula el mínimo valor del valor absoluto de la matriz.
bool Mul(const Pds::Matrix &B, Pds::Matrix &Out) const
Multiplica con sigo mismo (A), una matriz B y el resultado es cargado en Out. Este método es similar ...
bool FillRandC(double p1)
Inicializa la matriz con números aleatórios unos y ceros, la probabilidad de 1 es p1.
Pds::Matrix & operator+=(double b)
Suma y acumula en si mismo (A), un valor b. Este operador es similar al método AddAssig()
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)
Multiplica y acumula en si mismo (A), un valor b. Este operador es similar al método MulAssig()
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 número 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 , la probabilidade en relación a los unos y ceros en la matriz despue...
std::vector< Pds::Point2D > GetPoint2DsFromCols(unsigned int colx, unsigned int coly) const
Copia un par de columnas de la matriz para convertirlas en un vector de Pds::Point2D.
Pds::Matrix Conv(const Pds::Matrix &B, Pds::Ra::Padding Padding=Pds::Ra::Full) const
Calcula la convolución entre A y B.
std::vector< unsigned int > KNearest(unsigned int K, const Pds::Vector &V, std::vector< double > &D2) const
Calcula que linea de es mas cercana al vector .
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.
bool Apply(double(*func)(double), const Pds::Matrix &B)
Aplica la función func a cada elemento de la matriz. La matriz que recibe debe tener el mismo tamaño ...
Pds::Matrix Scale(double minval, double maxval) const
Rescala linearmente los datos desde minval a maxval.
Pds::Vector QuadraticFormWithRows(const Pds::Matrix &X) const
Calcula la forma cuadrática .
Pds::Matrix SubLambdaI(double lambda) const
Dada una matriz , este metodo retorna :
std::map< int, unsigned int > IntegerCount(void) const
Cuenta la cantidad de elementos enteros.
static bool IsBatchBlock(const std::vector< std::vector< Pds::Matrix > > &Tensor)
Verifica que el tensor (std::vector<std::vector<Pds::Matrix>>) sea un vector de vectores no vacíos de...
double MinAbsOfDiag(void) const
Retorna el mínimo valor absoluto de la diagonal de una matriz . La matriz no necesita ser cuadrada,...
bool Save(const std::string &filepath) const
Escribe en un archivo de texto el contenido de la matriz.
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.
Pds::Matrix MMt(void) const
Retorna A*A.T() cargado en B.
static bool ExportBatchBlockXmlToStream(std::ofstream &myfile, const std::vector< std::vector< Pds::Matrix > > &Block)
Escribe en un std::ofstream en formato Xml con el contenido del BatchBlock.
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...
double MaxAbsOfLowerTriangular(void) const
Retorna el máximo valor absoluto de los elementos abajo de la diagonal. La matriz no necesita ser cua...
Matrix(const std::vector< Pds::Position > &P)
Crea una matriz de dos columnas, en la primera columna estan los elementos Lin y en la segunda column...
static Pds::Matrix MeanSampleBlock(const std::vector< Pds::Matrix > &Block)
Calcula A,la matriz media de un conjunto de N matrizes agrupadas en un std::vector.
double MaxAbsOfDiag(void) const
Retorna el máximo valor absoluto de la diagonal de una matriz . La matriz no necesita ser cuadrada,...
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. La matriz que recibe debe tener ...
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...
Pds::Vector QuadraticDotWithRows(const Pds::Vector &Mu) const
Calcula la forma cuadrática .
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.
bool FindValAndReplace(double val, double rep)
Remplaza valores especificos por una matriz por otros.
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::Vector MinInRows(void) const
Retorna un vector con el mínimo valor de cada linea.
bool QR(Pds::Matrix &Q, Pds::Matrix &R) const
Calcula la descomposición QR de una matriz .
Pds::Matrix GreaterThan(double b) const
[Elemento a elemento] Calcula con sigo mismo (A), si (A) es mayor que un valor b y el resultado es ca...
bool ExportJsonToStream(std::ofstream &myfile) const
Escribe en un archivo Json el contenido de la matriz.
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...
static bool GetSampleRaw(const std::vector< Pds::Matrix > &Block, unsigned int id, Pds::Vector &x)
Extrae una muestra de un bloque (std::vector<Pds::Matrix>) de N matrices (Pds::Matrix) de L elementos...
Pds::Matrix OperateCols(double(*func)(const Pds::Matrix &Col)) const
Opera la función func usando como entrada cada columna de la matriz.
Pds::Matrix OperateCols(double(*func)(const Pds::Vector &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...
std::string ExportJsonToString(unsigned int ntabs) const
Retorna una cadena de texto en formato Json con el contenido de la matriz.
static std::vector< Pds::Matrix > MaxPoolingSampleBlock(const std::vector< Pds::Matrix > &A, unsigned int LinPool, unsigned int ColPool)
Aplica max pooling a cada matriz de lineas y columnas.
std::vector< Pds::Matrix > FindRowsBlock(const Pds::Vector &V, std::vector< int > &Label) const
Retorna un vector de matrices con las lineas donde existe un mismo id en el vector ....
bool ExportXmlToStream(std::ofstream &myfile) const
Escribe en un archivo Xml el contenido de la matriz.
double Var(double *mean=NULL) const
Calcula el valor de la varianza de la matriz.
double Cov(const Pds::Matrix &B) const
Calcula la covarianza con la matriz.
bool LoadFromStream(std::ifstream &ifs, unsigned int Nlin, unsigned int Ncol)
Lee Nlin*Ncol elementos desde un archivo, estos elementos son colocados en una matriz de Nlin lineas ...
double RMS(void) const
Calcula valor raiz quadrático medio de una matriz.
std::vector< unsigned int > Find(void) const
Retorna una lista de indices donde existe un 1 en la matriz A.
Pds::RegionRect GetRegion(void) const
Retorna una variable Pds::RegionRect desde la posicion (0,0), con ancho y alto (Mat....
bool ExportTexFile(const std::string &filepath, const std::vector< std::string > &titles, const std::vector< std::string > &rowtitles, const std::string &caption="My caption", const std::string &label="mylabel") const
Escribe en un archivo de texto el contenido de la matriz usando un formato de tabla de tex.
static Pds::Vector FlattenSampleBlock(const std::vector< Pds::Matrix > &Block)
Convierte a Pds::vector un SampleBlock.
double NormDiff(const Pds::Matrix &B) const
Calcula la 2-norm de una matriz (Frobenius norm).
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...
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 DivAssig(const Pds::Matrix &B)
Divide y acumula en si mismo (A), una matriz B. Este es similar al operador /=.
bool ExportBmpFileScale(const unsigned char colormap[256][3], const std::string &filepath) const
Escribe en una matriz en un archivo binario en formato BMP. Escala los datos de de 0 a 255,...
bool ImportXmlFromString(const std::string &str)
Carga el contenido de una matriz desde un std::string en formato Xml.
Pds::Vector ArgMaxInRows(void) const
Retorna un vector con el ID del máximo valor de cada linea.
bool MeanStdInRows(Pds::Vector &Mean, Pds::Vector &Std) const
Calcula la media y el standard deviation de cada linea de la matriz.
bool GetRow(unsigned int lin, Pds::Matrix &Row) const
Retorna una matriz linea escojida en la linea lin de X. Hace una verificación si la linea existe y si...
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 ...
bool FromJson(const Pds::Json &J)
Lee un objeto Pds::Json busca la etiqueta "Matrix" y lo carga en la matriz. El objeto debe tener al m...
void Print(const std::string &str) const
Imprime en pantalla el contenido de la matriz después del texto indicado en str.
static std::vector< std::vector< Pds::Matrix > > ZerosBatchBlock(unsigned int L, unsigned int N, const Pds::Size &Sz)
Crea un tensor (std::vector<std::vector<Pds::Matrix>>) con matrices no nulas y similares inicializada...
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.
static std::vector< Pds::Matrix > ImportBmpFile(const std::string &bmpfilename)
Lee matrices de un archivo binario en formato BMP.
bool HasLeq(double val) const
Verifica si existe al menos un elemento de la matriz menor o igual a el valor val.
bool HasNan(void) const
Verifica si la matriz tiene algun valor NAN (Not A Number).
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 MaxInCols(std::vector< unsigned int > &Lin) const
Calcula el máximo en cada columna de la matriz.
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,...
double MSE(const Pds::Matrix &B) const
Calcula valor del error quadrático medio (Mean Square Error) entre las matrices y .
bool IsRowMatrix(void) const
Verifica si la matriz tiene solo una linea.
void Print(void) const
Imprime en pantalla el contenido de la matriz.
bool MulAssig(const Pds::Matrix &B)
Multiplica y acumula en si mismo (A), una matriz B. Este es similar al operador *=.
double & In(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 ...
Pds::Vector MaxInRows(void) const
Retorna un vector con el máximo valor de cada linea.
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...
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.
Pds::Matrix MinInCols(void) const
Calcula el mínimo en cada columna de la matriz.
bool RowSwap(unsigned int lin1, unsigned int lin2)
Intercambia los valores de las lineas de una matriz.
static std::vector< std::vector< Pds::Matrix > > RandNBatchBlock(unsigned int L, unsigned int N, const Pds::Size &Sz)
Crea un tensor (std::vector<std::vector<Pds::Matrix>>) con matrices no nulas y similares inicializada...
bool DivBelowAssig(double b)
[Elemento a elemento] Divide y acumula en si mismo (A), un valor b.
bool LoadLineFromStream(std::ifstream &ifs)
Lee una linea de un archivo y crea una matriz de Nlin=1 y Ncol columnas. Cada elemento es separado po...
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,...
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.
std::string ExportXmlToString(void) const
Retorna un std::string en formato Xml con el contenido 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.
std::vector< unsigned int > FindIdOfKMin(unsigned int K) const
Retorna un vector de indices de los K menores valores en la matriz A.
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...
static Pds::Size Conv2DOutputSize(const Pds::Size &A, const Pds::Size &B, const std::vector< unsigned int > &Strides, Pds::Ra::Padding Padding)
Calcula el tamaño de la matriz resultado de la convolucion de A y B.
bool FillRandU(double a, double b)
Inicializa la matriz con números aleatórios, distribuidos uniformemente, desde a a b,...
Pds::Vector Histogram(double min, double max, unsigned int L) const
Retorna un vector con um histograma de elementos espaciados . Elementos con valores menores a o may...
bool ProductAssig(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...
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 Fill(const std::vector< Datum > &P)
Inicializa la matriz con un valor constante.
Pds::Matrix OperateRows(double(*func)(const Pds::Vector &Row)) const
Opera la función func usando como entrada cada fila de la matriz.
std::string ToString(const std::string &EndData) const
Convierte los datos de la matriz en un std::string.
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.
Pds::Vector QuadraticFormWithRows(const Pds::Matrix &X, const Pds::Vector &Mu) const
Calcula la forma cuadrática .
bool IsNotSimilarTo(const Pds::Matrix &B) const
Verifica si las matrices son similares en tamaño.
Pds::Matrix Or(const Pds::Matrix &B, double Umbral=0.5) const
[Elemento a elemento] Or con sigo mismo (A), una matriz B y el resultado es cargado en C.
Pds::Matrix & operator/=(const Pds::Matrix &B)
[Elemento a elemento] Divide y acumula en si mismo (A), una matriz B. Este operador es similar al mét...
std::string ExportOctaveString(const std::string &pname) const
Retorna un std:string con los datos de la matriz en el formato de octave. Es necesario dar un nombre ...
double PSNR(const Pds::Matrix &B, unsigned int NBITS) const
Calcula valor del error quadrático medio entre las matrices y .
bool SetDiagonal(double val)
Copia un valor en una diagonal de la matriz. Copia hasta donde exista la diagonal.
bool FillRandN(double U, double Sigma)
Inicializa la matriz con números aleatórios, distribuidos usando una distribución Gaussiana con media...
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...
bool RowDivByAbsMax(void)
Normaliza cada linea de la matriz dividiendola por el máximo valor absoluto de la linea....
double Norm(void) const
Calcula la 2-norm de una matriz (Frobenius norm).
bool ExportTexFile(const std::string &filepath, const std::string &caption="My caption", const std::string &label="mylabel") const
Escribe en un archivo de texto el contenido de la matriz usando un formato de tabla de tex.
double Det(void) const
Calcula la determinante.
bool NormalizeRows(void)
Normaliza cada linea de la matriz convirtiendolo en una linea unitaria.
Pds::Matrix Remodel(unsigned int Nlin, unsigned int Ncol)
Remodela los datos internos de la array y retorna un array de tamaño diferente, los datos que faltan ...
Pds::Matrix OperateRows(double(*func)(const Pds::Matrix &Row)) const
Opera la función func usando como entrada cada fila de la matriz.
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 XorAssigVectorAtCol(unsigned int col, const Pds::Vector &B, double Umbral=0.5)
Xor y acumula en si mismo (A), una matriz B desde un punto (0,col) haciendo una intersección.
Pds::Matrix CovMatrix(Pds::Matrix &Mean) const
Calcula la matriz de covarianza de la matriz.
Pds::Vector MinAbsInRows(void) const
Retorna un vector con el mínimo valor absoluto de cada linea.
bool RowDivAssig(unsigned int lin, double alpha)
Divide la linea lin por alpha.
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 Pow(double val) const
[Elemento a elemento] Potencia asi mismo (A), elemento a elemento, con un valor val y el resultado es...
bool Conv2D(const Pds::Matrix &B, Pds::Matrix &C, const std::vector< unsigned int > &Strides={1, 1}, Pds::Ra::Padding Padding=Pds::Ra::Full) const
Calcula la convolución entre A y B.
static bool ExportAsGif(const std::vector< Pds::Matrix > &Block, const std::string &filename, unsigned int delay=100, const unsigned char colormap[256][3]=Pds::Colormap::Gray)
Salva el bloque (std::vector<Pds::Matrix>) en una imagen GIF.
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::Array< unsigned int > IdInMultipleMse(const Pds::Matrix &X) const
Calcula que linea de es mas cercana a cada linea de .
Pds::Matrix Geq(double b) const
[Elemento a elemento] Calcula con sigo mismo (A), si (A) es mayor o igual que un valor b y el resulta...
Pds::Matrix FindVal(double val) const
Retorna una nueva matriz B (binaria) con unos donde exista en A el valor val, y cero donde no se cump...
double Mape(const Pds::Matrix &B) const
Calcula el error absoluto medio porcentual (Mean Absolute Percentage Error) de una matriz.
bool ProductAssigPlus(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), const Pds::Matrix &A)
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, 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.
bool Apply(const Pds::Matrix &B)
Aplica la función func a cada elemento de la matriz. La matriz que recibe debe tener el mismo tamaño ...
Pds::Vector GetDiagonal(void) const
Retorna un vector columna copia de los valores de la diagonal de la matriz.
static std::string ExportSampleBlockXmlToString(const std::vector< Pds::Matrix > &Block)
Retorna un std::string en formato Xml con el contenido del SampleBlock.
bool FillRandU(int a, int b)
Inicializa la matriz con números aleatórios, distribuidos uniformemente, desde a a b,...
bool Apply(double(*func)(double, const std::vector< double > &), const std::vector< double > &var)
Aplica la función func a cada elemento de la matriz.
Pds::Size Size(void) const
Retorna un objeto de tipo Pds::Size con el número de lineas y columans.
Pds::Matrix MinInCols(Pds::Array< unsigned int > &Lin) const
Calcula el mínimo en cada columna de la matriz.
bool GetRows(unsigned int lin_init, unsigned int lin_end, Pds::Matrix &B) const
Retorna una sub matriz escojida desde la linea lin_init hasta lin_end, inclusive. Hace una verificaci...
Pds::Matrix GetCol(unsigned int col) const
Retorna una matriz columna escojida en la columna col. Hace una verificación si la columna existe,...
Pds::Matrix EigenVectors(const Pds::Vector &Lambda, unsigned int MaxIter=20000, bool EmptyWhenError=true) const
Calcula los vectores própios (Eigenvectors) de una matriz , Los vectores propios están colocados en l...
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::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.
Pds::Matrix FindRows(const Pds::Vector &B, double b=0.5) const
Retorna una nueva matriz con las lineas donde existe un 1 en la matriz B. En verdad B es binarizado i...
bool AndAssigAt(unsigned int lin, unsigned int col, const Pds::Matrix &B, double Umbral=0.5)
And y acumula en si mismo (A), una matriz B desde un punto (lin,col) haciendo una intersección.
static Pds::Matrix FromString(const std::string &str)
Convierte un sdt::string a una Matriz de Nlin lineas y Ncol columnas.
bool ProductAssigMinus(double b, const Pds::Matrix &B)
[Elemento a elemento] Multiplica con sigo mismo (A), elemento a elemento, una matriz (b-B) y el resul...
std::vector< Pds::Matrix > SampleBlock
Definición de un tipo de dato Pds::SampleBlock.
Definition: Matrix.hpp:8147
static std::vector< std::vector< Pds::Matrix > > ImportBatchBlockXmlFromString(const std::string &str)
Carga el contenido de una std::vector<std::vector<Pds::Matrix>> desde un std::string en formato Xml.
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 número 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 ExportTexFile(const std::string &filepath, const std::vector< std::string > &titles, const std::string &caption="My caption", const std::string &label="mylabel") const
Escribe en un archivo de texto el contenido de la matriz usando un formato de tabla de tex.
bool ProductAssig(const Pds::Matrix &B)
[Elemento a elemento] Multiplica con sigo mismo (A), elemento a elemento, una matriz B y el resultado...
Pds::Matrix AddLambdaI(double lambda) const
Dada una matriz , este metodo retorna :
Pds::Matrix OperateCols(double(*func)(const Pds::Vector &Col, const Pds::Vector &C), const Pds::Vector &C) const
Opera la función func usando como entrada cada columna de la matriz.
Pds::Matrix QuadraticFormWithSamples(const std::vector< Pds::Matrix > &X, const Pds::Vector &Mu) const
Calcula la forma cuadrática .
bool AddAssigAt(unsigned int lin, unsigned int col, double b)
Suma y acumula en si mismo (A), un valor b en un punto (lin,col)
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:1305
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 = ....
Pds::Matrix CholeskyBanachiewicz(void) const
Dada una matriz simétrica definida positiva , este método realiza la descomposición Cholesky,...
std::vector< Pds::Matrix > FindRowsBlock(const Pds::Array< unsigned int > &ID) const
Retorna un grupo de matrices con las lineas donde existe el mismo indice id en la matriz entera ....
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 MulRowMatrix(const Pds::Matrix &B) const
[Elemento a elemento] Multiplica con sigo mismo (A), una matriz B linea y el resultado es cargado en ...
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 número 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...
bool ApplyProduct(const Pds::Matrix &B, const Pds::Matrix &C)
[Elemento a elemento] Aplica a cada elemento de la multiplicación de matrices. La matriz que recibe d...
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 std::vector< Pds::Matrix > RandNSampleBlock(unsigned int N, const Pds::Size &Sz)
Crea un bloque (std::vector<Pds::Matrix>) con matrices no nulas y similares inicializadas con Pds::Ra...
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:1319
bool ScalingColsAnalysis(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 MMt(const Pds::Matrix &B) const
Retorna A*A.T() cargado en B.
Pds::Matrix OperateRows(double(*func)(const Pds::Vector &Row, const Pds::Vector &C, const std::vector< double > &var), const Pds::Vector &C, const std::vector< double > &var) const
Opera la función func usando como entrada cada fila de la matriz.
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 máximo valor absoluto de cada linea.
std::vector< double > ToStdVector(void) const
Retorna un std::vector con los elelentos de la matriz, lee columna a columna.
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 CovMatrix(void) const
Calcula la matriz de covarianza de la matriz.
bool ApplyAdd(double(*func)(double), double alpha, const Pds::Matrix &B, double beta, const Pds::Matrix &C)
Aplica la función func a cada elemento de la suma ponderada de las matrices. La matriz que recibe deb...
void Print(const std::string &str, unsigned int precision) const
Imprime en pantalla el contenido de la matriz después del texto indicado en str.
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.
bool MulComp(double b, const Pds::Matrix &B, Pds::Matrix &Out) const
Multiplica con sigo mismo (A), un vector [b;B] y el resultado es cargado en Out. Este método es simil...
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 Add(double b) const
[Elemento a elemento] Suma con sigo mismo (A), una valor b y el resultado es cargado en C....
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.
const unsigned char Gray[256][3]
Definition: Colormap.hpp:66
Nombre de espacio para Pds (Procesamiento Digital de Senales)
Definition: AbstractRV.hpp:42

Enlaces de interés

HomePage Bazaar Download Bug report Ayuda Developer Feed