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 
63 #include <Pds/Matrix>
64 #include <Pds/Size>
65 
66 #include <sstream> // std::ostringstream
67 
68 namespace Pds{
69 
77 class Vector: public Matrix
78 {
79 
80 public:
81 
90  Vector(void);
91 
96  Vector(unsigned int N);
97 
98 
122  Vector(const Pds::Size &S);
123 
144  Vector(const Pds::Matrix &B);
145 
146 
159  template <class Datum>
161 
175  Vector(const char *str);
176 
177 
191  Vector(const std::initializer_list<double> list);
192 
198  Vector(unsigned int N,double val);
199 
221  Vector(const Pds::Matrix &B,unsigned int col);
222 
244  Vector(double (*func)(double),const Pds::Vector &B );
245 
267  Vector(double (*func)(double),const Pds::Matrix &B );
268 
269 
283  Vector(Pds::Ra::FormatType Type,std::string filepath);
284 
286 
318  Pds::Vector Conv(const Pds::Vector &B, bool Same=false) const;
319 
337  Pds::Vector XCorr(const Pds::Vector &B, bool Same=false) const;
338 
358  Pds::Matrix MulTComp(double b,const Pds::Vector &B) const;
359 
375  Pds::Vector Unit(void) const;
376 
377 
395  bool Reshape(unsigned int Nlin,unsigned int Ncol);
396 
403  bool Reshape(unsigned int Nel);
404 
405 
416  bool FusionVer(std::list<Pds::Matrix> &list);
417 
418 
423 private:
425  unsigned int init,
426  unsigned int mid,
427  unsigned int end,
428  double **tmp1,
429  double **tmp2);
430 
432  unsigned int init,
433  unsigned int end,
434  double **tmp1,
435  double **tmp2);
436 public:
449 
466  const double &operator[](const unsigned int &id) const
467  {
468  return this->array[id][0];
469  }
470 
471 
479  const double &GetRaw(unsigned int lin) const
480  {
481  return this->array[lin][0];
482  }
483 
484 
492  void SetRaw(unsigned int lin,const double &val)
493  {
494  this->array[lin][0]=val;
495  }
518  bool Copy(const Pds::Matrix &B);
519 
529  bool Vectorize(const Pds::Matrix &B)
530  {
531  return this->Copy(B);
532  }
533 
534 
552  bool CopyRow(unsigned int lin, const Pds::Matrix &B);
553 
561  void ElementAddAssigRaw(unsigned int lin,const double &val)
562  {
563  this->array[lin][0]+=val;
564  }
569 }; // Class Vector
570 
571 } // namespace Pds
572 
573 
578 #endif
579 
La clase tipo Array . Esta clase genera una agrupación de 2 datos. Para usar incluir Pds/Array.
Definition: Array.hpp:68
La clase tipo Pds::Matrix . Esta clase genera una matriz de Nlin lineas y Ncol columnas....
Definition: Matrix.hpp:86
double ** array
Definition: Matrix.hpp:89
La clase tipo Pds::Size . Esta clase genera un objeto con dos parametros Nlin y Ncol....
Definition: Size.hpp:58
La clase tipo Pds::Vector . Esta clase genera una matriz de Nlin lineas y 1 columna....
Definition: Vector.hpp:78
void SortWith_mergesort(Pds::Matrix &A, unsigned int init, unsigned int end, double **tmp1, double **tmp2)
void SortWith_merge(Pds::Matrix &A, unsigned int init, unsigned int mid, unsigned int end, double **tmp1, double **tmp2)
FormatType
Tipo de dato en la carga de información desde archivo.
Definition: RaDefines.hpp:150
unsigned int Ncol(void) const
Retorna el numero de columnas de la matriz.
unsigned int Nlin(void) const
Retorna el numero de lineas de la matriz.
unsigned int Nel(void) const
Retorna el numero de elementos de la matriz (Nlin x Ncol).
void ElementAddAssigRaw(unsigned int lin, const double &val)
Suma un valor al contenido de un elemento lin (acumula). Elem+=val.
Definition: Vector.hpp:561
Vector(const Pds::Size &S)
Crea un objeto de tipo Pds::Vector con elementos inicializados con cero.
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...
bool FusionVer(std::list< Pds::Matrix > &list)
Concatena verticalmente varias matrices. Si las matrices no tienen el mismo número de columnas se c...
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 Vectorize(const Pds::Matrix &B)
Copia en si mismo (A), el contenido de una matriz B vectorizandola columana a columna....
Definition: Vector.hpp:529
Vector(const std::initializer_list< double > list)
Crea un objeto de tipo Pds::Vector copiando datos desde una lista.
const double & operator[](const unsigned int &id) const
Retorna el valor en cada posicion del vector (solo lectura).
Definition: Vector.hpp:466
Vector(Pds::Ra::FormatType Type, std::string filepath)
Crea un objeto de tipo Pds::Vector copiando datos desde un archivo.
Vector(unsigned int N, double val)
Crea un objeto de tipo Pds::Vector.
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.
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,...
Pds::Vector Conv(const Pds::Vector &B, bool Same=false) const
Calcula la convolución entre A y B.
Pds::Vector Unit(void) const
Calcula el vector unitario de A.
Vector(const Pds::Matrix &B, unsigned int col)
Crea un objeto de tipo Pds::Vector copiando datos desde una columna de una matriz.
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...
Vector(const char *str)
Crea un objeto de tipo Pds::Vector copiando datos desde una cadena.
bool CopyRow(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...
Vector(void)
Crea un objeto de tipo Pds::Vector.
const double & GetRaw(unsigned int lin) const
Retorna una variable Datum en la posición (lin,0) de vector.
Definition: Vector.hpp:479
void SetRaw(unsigned int lin, const double &val)
Establece una variable Datum en la posición (lin,0) del vector.
Definition: Vector.hpp:492
Pds::Vector XCorr(const Pds::Vector &B, bool Same=false) const
Calcula la correlacion cruzada entre A y B.
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 espacion para PDS (Procesamiento Digital de Senales)
Definition: RaFile.hpp:47

Enlaces de interés

HomePage Bazaar Download Bug report Ayuda Developer Feed