Home | Develop | Download | Contact
CMatrix.hpp
1 /*
2  * CMatrix.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 
32 #ifndef __PDS_CMATRIX_HPP__
33 #define __PDS_CMATRIX_HPP__
34 
35 #include <string>
36 #include <Pds/Ra>
37 #include <Pds/Size>
38 #include <Pds/Complex>
39 
49 namespace Pds{
50 
51 
61 class CMatrix
62 {
63 
64 private:
65  // Parte real de una matriz compleja
66  Pds::Matrix Real;
67  // Parte imaginaria de una matriz compleja
68  Pds::Matrix Imag;
69 
70 public:
71 
83  CMatrix(void);
84 
92  CMatrix(unsigned int Nlin,unsigned int Ncol);
93 
94 
103  CMatrix(unsigned int Nlin,unsigned int Ncol, double val);
104 
114  CMatrix(unsigned int Nlin,unsigned int Ncol, double valr, double vali);
115 
124  CMatrix(unsigned int Nlin,unsigned int Ncol, const Pds::Complex &C);
125 
133  CMatrix(const Pds::Matrix &Real,const Pds::Matrix &Imag);
134 
135 
143 
144 
153  CMatrix(Pds::Complex func(const Pds::Complex &a,const Pds::Complex &b),const Pds::CMatrix &A,const Pds::CMatrix &B);
154 
156 
161 public:
174  bool Rect(const Pds::Matrix &Real,const Pds::Matrix &Imag);
175 
183  bool Polar(const Pds::Matrix &Module,const Pds::Matrix &Angle);
184 
189 public:
190 
203 
210  Pds::CMatrix Plus (void) const;
211 
219 
226  Pds::CMatrix Minus (void) const;
231 public:
245 
253  Pds::CMatrix operator + (double b) const;
254 
263 
271  Pds::CMatrix Add(const Pds::CMatrix &B) const;
272 
280  Pds::CMatrix Add(double b) const;
281 
289  Pds::CMatrix Add(const Pds::Complex &c) const;
290 
299 
307  Pds::CMatrix Sub(const Pds::CMatrix &B) const;
308 
316  Pds::CMatrix operator - (double b) const;
317 
326 
334  Pds::CMatrix Sub(double b) const;
335 
343  Pds::CMatrix Sub(const Pds::Complex &c) const;
344 
353 
361  Pds::CMatrix Mul(const Pds::CMatrix &B) const;
362 
370  Pds::CMatrix operator * (double b) const;
371 
380 
388  Pds::CMatrix Mul(double b) const;
389 
397  Pds::CMatrix Mul(const Pds::Complex &c) const;
398 
407 
416 
424  Pds::CMatrix Div(const Pds::CMatrix &B) const;
425 
426 
434  Pds::CMatrix operator / (const Pds::Matrix &B) const;
435 
443  Pds::CMatrix Div(const Pds::Matrix &B) const;
444 
445 
453  Pds::CMatrix operator / (double b) const;
454 
455 
464 
465 
473  Pds::CMatrix Div(double b) const;
474 
482  Pds::CMatrix Div(const Pds::Complex &c) const;
483 
484 
492  Pds::CMatrix Pow(const Pds::CMatrix &B) const;
493 
501  Pds::CMatrix Pow(double b) const;
507 public:
519  Pds::CMatrix Conj(void) const;
520 
527  Pds::Matrix Module(void) const;
528 
529 
536  Pds::Matrix Module2(void) const;
537 
538 
548  Pds::Matrix Angle(void) const;
549 
555 public:
565  Pds::Size Size(void) const;
566 
572  unsigned int Nlin(void) const;
573 
579  unsigned int Ncol(void) const;
584 public:
585 
596  bool IsEmpty(void) const;
597 
603  bool IsNotSimilarTo(const Pds::CMatrix &B) const;
604 
611  bool HasNan(void) const;
616 public:
627  void Print(std::string str="") const;
628 
632 }; // Class CMatrix
633 
634 } // namespace Pds
635 
636 
646 
656 
666 
676 
686 
696 
706 
707 
717 
722 #endif
723 
La clase tipo Pds::CMatrix . Esta clase genera un objeto con dos parametros Nlin y Ncol....
Definition: CMatrix.hpp:62
Pds::Matrix Imag
Definition: CMatrix.hpp:68
Pds::Matrix Real
Definition: CMatrix.hpp:66
La clase tipo Pds::Complex . Esta clase genera un objeto con dos parametros Nlin y Ncol....
Definition: Complex.hpp:59
Pds::CMatrix operator+(void) const
Retorna un numero complejo igual a si mismo (A).
Pds::CMatrix Add(const Pds::CMatrix &B) const
[Elemento a elemento] Suma con sigo mismo (A) una matriz compleja B.
CMatrix(Pds::Complex func(const Pds::Complex &a, const Pds::Complex &b), const Pds::CMatrix &A, const Pds::CMatrix &B)
Crea un objeto de tipo Pds::CMatrix operando datos desde otras.
bool IsNotSimilarTo(const Pds::CMatrix &B) const
Verifica si la matriz no es simliar a B.
Pds::Size Size(void) const
Retorna el tamaño de si mismo (A).
Pds::CMatrix Sub(const Pds::CMatrix &B) const
[Elemento a elemento] Resta con sigo mismo (A) una matriz compleja B.
Pds::CMatrix Mul(const Pds::Complex &c) const
[Elemento a elemento] Multiplica con sigo mismo (A) un número complejo c.
Pds::CMatrix Sub(const Pds::Complex &c) const
[Elemento a elemento] Resta con sigo mismo (A) un número real c.
unsigned int Ncol(void) const
Retorna el número de columnas de si mismo (A).
Pds::CMatrix Pow(const Pds::CMatrix &B) const
[Elemento a elemento] Eleva con sigo mismo (A) un exponente matriz compleja B.
Pds::Matrix Module2(void) const
Retorna el modulo al cuadrado de si mismo (A).
Pds::CMatrix operator-(void) const
Retorna un numero complejo igual al negativo de si mismo (A).
CMatrix(unsigned int Nlin, unsigned int Ncol, double valr, double vali)
Crea un objeto matriz de tipo Pds::CMatrix.
CMatrix(unsigned int Nlin, unsigned int Ncol, double val)
Crea un objeto matriz de tipo Pds::CMatrix.
Pds::CMatrix operator*(double a, const Pds::CMatrix &B)
Multiplica con a una matriz compleja B.
Pds::CMatrix Div(double b) const
[Elemento a elemento] Divide con sigo mismo (A) un número real b.
Pds::CMatrix Add(double b) const
[Elemento a elemento] Suma con sigo mismo (A) un número real b.
bool IsEmpty(void) const
Verifica si la matriz está vacia.
Pds::CMatrix Div(const Pds::CMatrix &B) const
[Elemento a elemento] Divide con sigo mismo (A) una matriz compleja B.
unsigned int Nlin(void) const
Retorna el número de lineas si mismo (A).
Pds::CMatrix Add(const Pds::Complex &c) const
[Elemento a elemento] Suma con sigo mismo (A) un número real c.
bool Polar(const Pds::Matrix &Module, const Pds::Matrix &Angle)
Carga el matriz compleja indicando el módulo y el ángulo.
bool Rect(const Pds::Matrix &Real, const Pds::Matrix &Imag)
Carga el matriz compleja indicando la parte real e imaginaria.
CMatrix(unsigned int Nlin, unsigned int Ncol)
Crea un objeto matriz de tipo Pds::CMatrix.
Pds::CMatrix Div(const Pds::Matrix &B) const
[Elemento a elemento] Divide con sigo mismo (A) una matriz real B.
Pds::Matrix Angle(void) const
Retorna el ángulo (fase o argumento) de si mismo (A).
CMatrix(const Pds::CMatrix &B)
Crea un objeto de tipo Pds::CMatrix copiando datos desde otra.
void Print(std::string str="") const
Muestra en pantalla el contenido de Pds::CMatrix, elementos separados por tabulador.
bool HasNan(void) const
Verifica si el número complexo tiene algun valor NAN (Not A Number).
CMatrix(unsigned int Nlin, unsigned int Ncol, const Pds::Complex &C)
Crea un objeto matriz de tipo Pds::CMatrix.
Pds::CMatrix Conj(void) const
Retorna el conjugado de si mismo (A).
Pds::CMatrix Mul(const Pds::CMatrix &B) const
Multiplica con sigo mismo (A) una matriz compleja B.
Pds::CMatrix operator-(double a, const Pds::CMatrix &B)
Resta con a una matriz compleja B.
Pds::CMatrix operator/(const Pds::CMatrix &B) const
[Elemento a elemento] Divide con sigo mismo (A) una matriz compleja B.
Pds::CMatrix Mul(double b) const
[Elemento a elemento] Multiplica con sigo mismo (A) un número real b.
Pds::CMatrix operator/(double a, const Pds::CMatrix &B)
Divide con a una matriz compleja B.
CMatrix(void)
Crea un objeto matriz de tipo Pds::CMatrix Una matriz compleja vacia.
Pds::CMatrix operator+(double a, const Pds::CMatrix &B)
Suma con a una matriz compleja B.
Pds::CMatrix Pow(double b) const
[Elemento a elemento] Eleva con sigo mismo (A) un exponente real b.
CMatrix(const Pds::Matrix &Real, const Pds::Matrix &Imag)
Crea un objeto matriz de tipo Pds::CMatrix.
Pds::CMatrix Plus(void) const
Retorna un numero complejo igual a si mismo (A).
Pds::CMatrix operator*(const Pds::CMatrix &B) const
Multiplica con sigo mismo (A) una matriz compleja B.
Pds::CMatrix Minus(void) const
Retorna un numero complejo igual al negativo de si mismo (A).
Pds::Matrix Module(void) const
Retorna el modulo de si mismo (A).
Pds::CMatrix Div(const Pds::Complex &c) const
[Elemento a elemento] Divide con sigo mismo (A) un número real c.
Pds::CMatrix Sub(double b) const
[Elemento a elemento] Resta con sigo mismo (A) un número real b.
Pds::CMatrix Product(const Pds::CMatrix &B) const
[Elemento a elemento] Multiplica con sigo mismo (A) elemento a elemento una matriz compleja B.
Nombre de espacion para PDS (Procesamiento Digital de Senales)
Definition: CaTools.hpp:45

Enlaces de interés

HomePage Bazaar Download Bug report Ayuda Developer Feed