GNU Octave  4.0.0
A high-level interpreted language, primarily intended for numerical computations, mostly compatible with Matlab
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Pages
dDiagMatrix.h
Go to the documentation of this file.
1 /*
2 
3 Copyright (C) 1994-2015 John W. Eaton
4 
5 This file is part of Octave.
6 
7 Octave is free software; you can redistribute it and/or modify it
8 under the terms of the GNU General Public License as published by the
9 Free Software Foundation; either version 3 of the License, or (at your
10 option) any later version.
11 
12 Octave is distributed in the hope that it will be useful, but WITHOUT
13 ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
14 FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
15 for more details.
16 
17 You should have received a copy of the GNU General Public License
18 along with Octave; see the file COPYING. If not, see
19 <http://www.gnu.org/licenses/>.
20 
21 */
22 
23 #if !defined (octave_dDiagMatrix_h)
24 #define octave_dDiagMatrix_h 1
25 
26 #include "MDiagArray2.h"
27 
28 #include "dRowVector.h"
29 #include "dColVector.h"
30 #include "DET.h"
31 
32 #include "mx-defs.h"
33 
34 class
35 OCTAVE_API
37 {
38  friend class SVD;
39  friend class ComplexSVD;
40 
41 public:
42 
43  DiagMatrix (void) : MDiagArray2<double> () { }
44 
46  : MDiagArray2<double> (r, c) { }
47 
49  : MDiagArray2<double> (r, c, val) { }
50 
51  DiagMatrix (const DiagMatrix& a) : MDiagArray2<double> (a) { }
52 
54 
55  template <class U>
57 
58  explicit DiagMatrix (const Array<double>& a) : MDiagArray2<double> (a) { }
59 
61  : MDiagArray2<double> (a, r, c) { }
62 
64  {
66  return *this;
67  }
68 
69  bool operator == (const DiagMatrix& a) const;
70  bool operator != (const DiagMatrix& a) const;
71 
72  DiagMatrix& fill (double val);
73  DiagMatrix& fill (double val, octave_idx_type beg, octave_idx_type end);
74  DiagMatrix& fill (const ColumnVector& a);
75  DiagMatrix& fill (const RowVector& a);
76  DiagMatrix& fill (const ColumnVector& a, octave_idx_type beg);
77  DiagMatrix& fill (const RowVector& a, octave_idx_type beg);
78 
79  DiagMatrix transpose (void) const
80  { return MDiagArray2<double>::transpose (); }
81  DiagMatrix abs (void) const;
82 
83  friend OCTAVE_API DiagMatrix real (const ComplexDiagMatrix& a);
84  friend OCTAVE_API DiagMatrix imag (const ComplexDiagMatrix& a);
85 
86  // resize is the destructive analog for this one
87 
90 
91  // extract row or column i.
92 
93  RowVector row (octave_idx_type i) const;
94  RowVector row (char *s) const;
95 
96  ColumnVector column (octave_idx_type i) const;
97  ColumnVector column (char *s) const;
98 
99  DiagMatrix inverse (void) const;
100  DiagMatrix inverse (octave_idx_type& info) const;
101  DiagMatrix pseudo_inverse (double tol = 0.0) const;
102 
103  // other operations
104 
106  { return MDiagArray2<double>::extract_diag (k); }
107 
108  DET determinant (void) const;
109  double rcond (void) const;
110 
111  // i/o
112 
113  friend OCTAVE_API std::ostream& operator << (std::ostream& os,
114  const DiagMatrix& a);
115 
116 };
117 
118 OCTAVE_API DiagMatrix real (const ComplexDiagMatrix& a);
119 OCTAVE_API DiagMatrix imag (const ComplexDiagMatrix& a);
120 
121 // diagonal matrix by diagonal matrix -> diagonal matrix operations
122 
123 OCTAVE_API DiagMatrix
124 operator * (const DiagMatrix& a, const DiagMatrix& b);
125 
127 
128 #endif
OCTAVE_API DiagMatrix operator*(const DiagMatrix &a, const DiagMatrix &b)
Definition: dDiagMatrix.cc:320
OCTAVE_API DiagMatrix real(const ComplexDiagMatrix &a)
Definition: dDiagMatrix.cc:148
bool operator!=(const dim_vector &a, const dim_vector &b)
Definition: dim-vector.h:548
ComplexSVD & operator=(const ComplexSVD &a)
Definition: CmplxSVD.h:62
MDiagArray2< T > & operator=(const MDiagArray2< T > &a)
Definition: MDiagArray2.h:66
DiagMatrix(octave_idx_type r, octave_idx_type c)
Definition: dDiagMatrix.h:45
OCTAVE_API DiagMatrix imag(const ComplexDiagMatrix &a)
Definition: dDiagMatrix.cc:154
DiagMatrix(void)
Definition: dDiagMatrix.h:43
DiagMatrix transpose(void) const
Definition: dDiagMatrix.h:79
Array< T > extract_diag(octave_idx_type k=0) const
Definition: DiagArray2.cc:58
ColumnVector extract_diag(octave_idx_type k=0) const
Definition: dDiagMatrix.h:105
static MArray< double > const octave_idx_type const octave_idx_type octave_idx_type octave_idx_type r2
DiagMatrix(const DiagMatrix &a)
Definition: dDiagMatrix.h:51
#define MDIAGARRAY2_FORWARD_DEFS(B, R, T)
Definition: MArray-decl.h:256
Definition: DET.h:31
DiagMatrix(octave_idx_type r, octave_idx_type c, double val)
Definition: dDiagMatrix.h:48
DiagMatrix(const DiagArray2< U > &a)
Definition: dDiagMatrix.h:56
Definition: dMatrix.h:35
bool operator==(const dim_vector &a, const dim_vector &b)
Definition: dim-vector.h:519
Definition: dbleSVD.h:31
template OCTAVE_API std::ostream & operator<<(std::ostream &, const Array< bool > &)
static MArray< double > const octave_idx_type const octave_idx_type octave_idx_type octave_idx_type octave_idx_type c1
static MArray< double > const octave_idx_type const octave_idx_type octave_idx_type r1
DiagMatrix(const MDiagArray2< double > &a)
Definition: dDiagMatrix.h:53
MDiagArray2< T > transpose(void) const
Definition: MDiagArray2.h:97
T abs(T x)
Definition: pr-output.cc:3062
DiagMatrix(const Array< double > &a, octave_idx_type r, octave_idx_type c)
Definition: dDiagMatrix.h:60
DiagMatrix(const Array< double > &a)
Definition: dDiagMatrix.h:58