Home | Develop | Download | Contact
test_matrix_operators.cpp
1 
8 #include <iostream>
9 #include <Pds/Ra>
10 
11 int main(void)
12 {
13  Pds::Matrix A(2,2);
14  Pds::Matrix B(2,2);
15  Pds::Matrix C;
16 
17  A.Fill(1.0); std::cout<<"A:\n"<<A;
18  B.Fill(2.0); std::cout<<"B:\n"<<B;
19 
20  // = operator
21  std::cout<<std::endl;
22 
23  C= Pds::Matrix(2,2); // A Matrix object was created, the data were copied
24  // and later the Matrix object was destroyed.
25 
26  if((C=A).IsNotEmpty()) C.Print("C=A\n");
27  if(C.Copy(B)) C.Print("C=B\n");
28 
29  // += operator
30  std::cout<<std::endl;
31 
32  if((C+=A).IsNotEmpty()) C.Print("C+=A\n");
33  if(C.AddAssig(B)) C.Print("C+=B\n");
34 
35  if((C+=0.2).IsNotEmpty()) C.Print("C+=0.2\n");
36  if(C.AddAssig(0.8)) C.Print("C+=0.8\n");
37 
38  // -= operator
39  std::cout<<std::endl;
40 
41  if((C-=A).IsNotEmpty()) C.Print("C-=A\n");
42  if(C.SubAssig(B)) C.Print("C-=B\n");
43 
44  if((C-=0.3).IsNotEmpty()) C.Print("C-=0.3\n");
45  if(C.SubAssig(0.7)) C.Print("C-=0.7\n");
46 
47  // *= operator
48  std::cout<<std::endl;
49 
50  if((C*=0.2).IsNotEmpty()) C.Print("C*=0.2\n");
51  if(C.MulAssig(5.0)) C.Print("C*=5.0\n");
52 
53  if((C*=A).IsNotEmpty()) C.Print("C*=A\n");
54  if(C.MulAssig(A)) C.Print("C*=A\n");
55 
56  // Inv operator
57  std::cout<<std::endl;
58 
59  C=Pds::Matrix::FromString("117 822.2940998481383\n 822.2940998481383 5783.818979511911");
60  C.Print("C\n");
61  double rcond;
62  Pds::Matrix D=C.Inv(&rcond);
63  D.Print("D=C.Inv(&rcond)\n");
64 
65  (C*D).Print("\nC*D=\n");
66 
67  D.Fill(1.0);
68  D.Print("\nD.Fill(1.0)\n");
69 
70  Pds::Matrix F=D.PInv(&rcond);
71  F.Print("\nF:\n");
72  std::cout<<"rcond: "<<rcond<<std::endl;
73 
74  return 0;
75 }
La clase tipo Pds::Matrix . Esta clase genera una matriz de Nlin lineas y Ncol columnas....
Definition: Matrix.hpp:86
bool SubAssig(double b)
Resta y acumula en si mismo (A), un valor b. Este es similar al operador -=.
void Print(std::string str) const
Imprime en pantalla el contenido de la matriz después del texto indicado en str.
bool AddAssig(double b)
Suma y acumula en si mismo (A), un valor b. Este es similar al perador +=.
bool Fill(double val)
Inicializa la matriz con un valor constante.
Pds::Matrix PInv(double *rcond=NULL) const
Procesa esta matriz A y retorna B la matriz pseudo inversa de Moore Penrose.
static Pds::Matrix FromString(const std::string &str)
Convierte un sdt::string a una Matriz de Nlin lineas y Ncol columnas.
bool MulAssig(double b)
Multiplica y acumula en si mismo (A), un valor b. Este es similar al operador *=.
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 Inv(double *rcond=NULL) const
Retorna la matriz inversa.

Enlaces de interés

HomePage Bazaar Download Bug report Ayuda Developer Feed