Home | Develop | Download | Contact
Vector.hpp
1/*
2 * Vector.hpp
3 *
4 * Copyright 2018 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
35#ifndef __PDS_VECTOR_HPP__
36#define __PDS_VECTOR_HPP__
37
38
65#include <Pds/Matrix>
66#include <Pds/Size>
67
68#include <sstream> // std::ostringstream
69
70namespace Pds{
71
79class Vector: public Matrix
80{
81
82public:
83
92 Vector(void);
93
98 Vector(unsigned int N);
99
100
124 Vector(const Pds::Size &S);
125
147
148
161 template <class Datum>
163
177 Vector(const char *str);
178
179
193 Vector(const std::initializer_list<double> list);
194
209 Vector(const std::vector<double> &vec);
210
225 Vector(const std::vector<int> &vec);
226
241 Vector(const std::vector<bool> &vec);
242
248 Vector(unsigned int N,double val);
249
271 Vector(const Pds::Matrix &B,unsigned int col);
272
294 Vector(double (*func)(double),const Pds::Vector &B );
295
317 Vector(double (*func)(double),const Pds::Matrix &B );
318
319
333 Vector(Pds::Ra::FormatType Type,std::string filepath);
334
336
341public:
342
415
416
485 static Pds::Size Conv1DOutputSize( unsigned int Anlin,
486 unsigned int Bnlin,
487 unsigned int Stride,
489
559 unsigned int Stride=1,
561
598 Pds::Vector XCorr(const Pds::Vector &B, bool Same=false) const;
599
619 Pds::Matrix MulTComp(double b,const Pds::Vector &B) const;
620
626public:
627
639 static bool IsVectorBlock(const std::vector<Pds::Vector> &Block);
640
641
653 static Pds::Vector FlattenVectorBlock(const std::vector<Pds::Vector> &Block);
654
655
662 static std::vector<Pds::Vector> RandNVectorBlock(unsigned int N,unsigned int Sz);
663
664
676 static std::vector<Pds::Vector> MaxPoolingVectorBlock( const std::vector<Pds::Vector> &A,
677 unsigned int LinPool);
678
679
680
685public:
686
722 static bool ExportVectorBlockXmlToStream(std::ofstream &myfile,const std::vector<Pds::Vector> &Block);
723
754 static std::string ExportVectorBlockXmlToString(const std::vector<Pds::Vector> &Block);
755
756
796 static std::vector<Pds::Vector> ImportVectorBlockXmlFromString(const std::string &str);
797
803public:
804
817 static bool IsTensorVectorBlock(const std::vector<std::vector<Pds::Vector>> &Tensor);
818
827 static std::vector<std::vector<Pds::Vector>> RandNTensorVectorBlock(unsigned int L, unsigned int N, unsigned int Sz);
828
848 static std::string ExportTensorVectorBlockXmlToString(const std::vector<std::vector<Pds::Vector>> &Block);
849
877 static std::vector<std::vector<Pds::Vector>> ImportTensorVectorBlockXmlFromString(const std::string &str);
878
879
900 static bool ExportTensorVectorBlockXmlToStream( std::ofstream &myfile,
901 const std::vector<std::vector<Pds::Vector>> &Block);
902
909public:
910
921 Pds::Vector Unit(void) const;
922
929 bool Normalize(void);
930
931
939
948
957
958
963public:
976 bool Reshape(unsigned int Nlin,unsigned int Ncol);
977
984 bool Reshape(unsigned int Nel);
985
986
997 bool FusionVer(std::list<Pds::Matrix> &list);
998
1003public:
1078 std::vector<unsigned int>
1079 NearestK( unsigned int K,
1080 const std::vector<Pds::Vector> &C,
1081 std::vector<double> &D2) const;
1082
1083
1088private:
1090 unsigned int init,
1091 unsigned int mid,
1092 unsigned int end,
1093 double **tmp1,
1094 double **tmp2);
1095
1097 unsigned int init,
1098 unsigned int end,
1099 double **tmp1,
1100 double **tmp2);
1101
1102 void SortWith_merge(unsigned int init,
1103 unsigned int mid,
1104 unsigned int end,
1105 double **tmp1);
1106
1107 void SortWith_mergesort( unsigned int init,
1108 unsigned int end,
1109 double **tmp1);
1110
1111 void SortWith_mergeid( unsigned int init,
1112 unsigned int mid,
1113 unsigned int end,
1114 double **tmp1,
1115 std::vector<unsigned int> &id,
1116 std::vector<unsigned int> &idtmp);
1117
1118 void SortWith_mergesortid( unsigned int init,
1119 unsigned int end,
1120 double **tmp1,
1121 std::vector<unsigned int> &id,
1122 std::vector<unsigned int> &idtmp);
1123
1124public:
1137
1143 bool SortMe(void);
1144
1150 bool SortMeReverse(void);
1151
1152
1158 std::vector<unsigned int> SortMeAndGetIds( void);
1159
1160
1169 bool SortFollowing(const std::vector<unsigned int> &id);
1174public:
1186 const double &operator[](const unsigned int &id) const
1187 {
1188 return this->array[id][0];
1189 }
1190
1191
1199 const double &GetRaw(unsigned int lin) const
1200 {
1201 return this->array[lin][0];
1202 }
1203
1204
1212 void SetRaw(unsigned int lin,const double &val)
1213 {
1214 this->array[lin][0]=val;
1215 }
1216
1217public:
1218
1239 Pds::Json ToJson(void) const;
1240
1241
1257 bool FromJson(const Pds::Json &J) ;
1258
1265public:
1266
1284 bool Copy(const Pds::Matrix &B);
1285
1295 bool Vectorize(const Pds::Matrix &B)
1296 {
1297 return this->Copy(B);
1298 }
1299
1300
1318 bool CopyFromRow(unsigned int lin, const Pds::Matrix &B);
1319
1327 void AddRawAssigAt(unsigned int lin,const double &val)
1328 {
1329 this->array[lin][0]+=val;
1330 }
1335}; // Class Vector
1336
1337} // namespace Pds
1338
1339
1344#endif
1345
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
double ** array
Definition: Matrix.hpp:99
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
void SortWith_mergesort(Pds::Matrix &A, unsigned int init, unsigned int end, double **tmp1, double **tmp2)
void SortWith_mergesort(unsigned int init, unsigned int end, double **tmp1)
void SortWith_mergeid(unsigned int init, unsigned int mid, unsigned int end, double **tmp1, std::vector< unsigned int > &id, std::vector< unsigned int > &idtmp)
void SortWith_mergesortid(unsigned int init, unsigned int end, double **tmp1, std::vector< unsigned int > &id, std::vector< unsigned int > &idtmp)
void SortWith_merge(Pds::Matrix &A, unsigned int init, unsigned int mid, unsigned int end, double **tmp1, double **tmp2)
void SortWith_merge(unsigned int init, unsigned int mid, unsigned int end, double **tmp1)
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
unsigned int Ncol(void) const
Retorna el número de columnas de la matriz.
unsigned int Nlin(void) const
Retorna el número de lineas de la matriz.
unsigned int Nel(void) const
Retorna el número de elementos de la matriz (Nlin x Ncol).
Pds::Vector Conv(const Pds::Vector &B, Pds::Ra::Padding Padding=Pds::Ra::Full) const
Calcula la convolución entre A y B.
bool SortMeReverse(void)
Ordena de forma descendente un vector .
bool SortFollowing(const std::vector< unsigned int > &id)
Ordena de forma ascendente un vector siguiendo un vector de IDs. En caso de error no se hace nada,...
static std::string ExportVectorBlockXmlToString(const std::vector< Pds::Vector > &Block)
Retorna un std::string en formato Xml con el contenido del VectorBlock.
Vector(const Pds::Size &S)
Crea un objeto de tipo Pds::Vector con elementos inicializados con cero.
Pds::Vector CumulativeNorm(void)
Retorna un vector que acumula y normaliza la suma de elementos de .
std::vector< unsigned int > SortMeAndGetIds(void)
Ordena de forma ascendente un vector e retorna el vector de IDs.
Pds::Vector Conv1D(const Pds::Vector &B, unsigned int Stride=1, Pds::Ra::Padding Padding=Pds::Ra::Full) const
Calcula la convolución entre A y B.
bool Reshape(unsigned int Nel)
Remodela los datos internos de la array y la convierte en una array de tamaño diferente,...
Vector(const Pds::Matrix &B)
Crea un objeto de tipo Pds::Vector copiando datos desde una matriz. Toda la matriz es vectorizada ley...
bool SortWith(Pds::Matrix &A)
Ordena de forma ascendente un vector y se lleva consigo una matriz A ordenando tambien las filas de e...
Vector(const std::vector< double > &vec)
Crea un objeto de tipo Pds::Vector copiando datos desde una std::vector.
bool FusionVer(std::list< Pds::Matrix > &list)
Concatena verticalmente varias matrices. Si las matrices no tienen el mismo número de columnas se c...
void AddRawAssigAt(unsigned int lin, const double &val)
Suma un valor al contenido de un elemento lin (acumula). Elem+=val.
Definition: Vector.hpp:1327
bool SortMe(void)
Ordena de forma ascendente un vector .
Vector(unsigned int N)
Crea un objeto de tipo Pds::Vector.
Vector(const Pds::Array< Datum > &B)
Crea un objeto de tipo Pds::Vector copiando datos desde un arreglo.
bool Normalize(void)
Normaliza el vector convirtiendolo en unvector unitario.
Vector(const std::vector< bool > &vec)
Crea un objeto de tipo Pds::Vector copiando datos desde una std::vector.
bool Vectorize(const Pds::Matrix &B)
Copia en si mismo (A), el contenido de una matriz B vectorizandola columana a columna....
Definition: Vector.hpp:1295
Vector(const std::initializer_list< double > list)
Crea un objeto de tipo Pds::Vector copiando datos desde una lista.
Vector(Pds::Ra::FormatType Type, std::string filepath)
Crea un objeto de tipo Pds::Vector copiando datos desde un archivo.
bool FromJson(const Pds::Json &J)
Lee un objeto Pds::Json busca la etiqueta "Vector" y lo carga en la matriz. El objeto debe tener al m...
static std::string ExportTensorVectorBlockXmlToString(const std::vector< std::vector< Pds::Vector > > &Block)
Retorna un std::string en formato Xml con el contenido del TensorVectorBlock.
Vector(unsigned int N, double val)
Crea un objeto de tipo Pds::Vector.
static std::vector< std::vector< Pds::Vector > > RandNTensorVectorBlock(unsigned int L, unsigned int N, unsigned int Sz)
Crea un tensor (std::vector<std::vector<Pds::Vector>>) con matrices no nulas y similares inicializada...
Pds::Vector Cumulative(void)
Retorna un vector que acumula la suma de elementos de .
Pds::Matrix MulTComp(double b, const Pds::Vector &B) const
Multiplica con sigo mismo (A), la transpuesta de un vector [b;B] y el resultado es cargado en C.
Pds::Json ToJson(void) const
Retorna un objeto Pds::Json con el contenido del vector.
Pds::Vector Reverse(void)
Retorna un vector en orden reverso de si mismo, .
bool Copy(const Pds::Matrix &B)
Copia en si mismo (A), el contenido de una matriz B vectorizandola columana a columna....
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,...
const double & GetRaw(unsigned int lin) const
Retorna una variable Datum en la posición (lin,0) de vector.
Definition: Vector.hpp:1199
static std::vector< Pds::Vector > MaxPoolingVectorBlock(const std::vector< Pds::Vector > &A, unsigned int LinPool)
Aplica max pooling a cada matriz de lineas y columnas.
static Pds::Vector FlattenVectorBlock(const std::vector< Pds::Vector > &Block)
Convierte a Pds::Vector un VectorBlock.
Pds::Vector Unit(void) const
Calcula el vector unitario de .
Vector(const Pds::Matrix &B, unsigned int col)
Crea un objeto de tipo Pds::Vector copiando datos desde una columna de una matriz.
static bool ExportTensorVectorBlockXmlToStream(std::ofstream &myfile, const std::vector< std::vector< Pds::Vector > > &Block)
Escribe en un std::ofstream en formato Xml con el contenido del TensorVectorBlock.
static Pds::Size Conv1DOutputSize(unsigned int Anlin, unsigned int Bnlin, unsigned int Stride, Pds::Ra::Padding Padding)
Calcula el tamaño de la matriz resultado de la convolucion de A y B.
Vector(const std::vector< int > &vec)
Crea un objeto de tipo Pds::Vector copiando datos desde una std::vector.
static std::vector< Pds::Vector > RandNVectorBlock(unsigned int N, unsigned int Sz)
Crea un bloque (std::vector<Pds::Vector>) con matrices no nulas y similares inicializadas con Pds::Ra...
Vector(double(*func)(double), const Pds::Matrix &B)
Crea un objeto de tipo Pds::Vector, evaluando mediante una función, los datos de una matriz vectoriza...
bool CopyFromRow(unsigned int lin, const Pds::Matrix &B)
Copia en si mismo (A), una linea de la matriz B. El tamaño de A debe ser el mismo que las columnas de...
static bool IsTensorVectorBlock(const std::vector< std::vector< Pds::Vector > > &Tensor)
Verifica que el tensor (std::vector<std::vector<Pds::Vector>>) sea un vector de vectores no vacíos de...
static std::vector< std::vector< Pds::Vector > > ImportTensorVectorBlockXmlFromString(const std::string &str)
Carga el contenido de una std::vector<std::vector<Pds::Vector>> desde un std::string en formato Xml.
Vector(const char *str)
Crea un objeto de tipo Pds::Vector copiando datos desde una cadena.
static std::vector< Pds::Vector > ImportVectorBlockXmlFromString(const std::string &str)
Carga el contenido de una std::vector<Pds::Vector> desde un std::string en formato Xml.
static bool IsVectorBlock(const std::vector< Pds::Vector > &Block)
Verifica que el bloque (std::vector<Pds::Vector>) sea un vector no vacío de matrices no nulas y simil...
Vector(void)
Crea un objeto de tipo Pds::Vector.
void SetRaw(unsigned int lin, const double &val)
Establece una variable Datum en la posición (lin,0) del vector.
Definition: Vector.hpp:1212
static bool ExportVectorBlockXmlToStream(std::ofstream &myfile, const std::vector< Pds::Vector > &Block)
Retorna un std::string en formato Xml con el contenido del VectorBlock.
Pds::Vector XCorr(const Pds::Vector &B, bool Same=false) const
Calcula la correlacion cruzada entre A y B.
const double & operator[](const unsigned int &id) const
Retorna el valor en cada posicion del vector (solo lectura).
Definition: Vector.hpp:1186
std::vector< unsigned int > NearestK(unsigned int K, const std::vector< Pds::Vector > &C, std::vector< double > &D2) const
Calcula que linea de es mas cercana al vector .
Vector(double(*func)(double), const Pds::Vector &B)
Crea un objeto de tipo Pds::Vector, evaluando mediante una función, los datos de otro vector.
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