 |
OpendTect
6.6
|
Go to the documentation of this file.
36 sz1<1?(sz0<1?1:sz0):sz1) { setAll(); }
44 {
return a2d_ = oth.
a2d_; }
46 {
return a2d_ = a2d; }
48 {
return a2d_ = a2d; }
50 {
return isEq( oth.
a2d_, fT(1e-6)) ; }
53 inline int size(
bool dim1=
false)
const;
54 inline void set(
int i0,
int i1, fT v ) { a2d_.set(i0,i1,v); }
55 inline fT&
get(
int i0,
int i1);
56 inline fT
get(
int i0,
int i1 )
const {
return a2d_.get(i0,i1); }
58 inline void setAll( fT v=fT(0) ) { a2d_.setAll( v ); }
80 #define mDefineA2DMatSizes(m,nm) \
81 const int nm##0 = (m).size( false ); const int nm##1 = (m).size( true )
87 return a2d_.info().getSize( dim1 ? 1 : 0 );
94 const od_int64 offset = a2d_.info().getOffset( i0, i1 );
95 return a2d_.getData()[offset];
99 #define mDefineImplA2DMatSizes mDefineA2DMatSizes(*this,sz)
106 if ( a2d_.info().getSize(0) != sz0 || a2d_.info().getSize(1) != sz1 )
109 for (
int idx0=0; idx0<sz0; idx0++ )
111 for (
int idx1=0; idx1<sz1; idx1++ )
113 if ( !
isFPEqual( get(idx0,idx1), a2d.
get(idx0,idx1), eps ) )
125 const int sz = sz0 > sz1 ? sz1 : sz0;
127 for (
int idx=0; idx<sz; idx++ )
136 for (
int idx0=0; idx0<sz0; idx0++ )
137 for (
int idx1=0; idx1<sz1; idx1++ )
138 get( idx0, idx1 ) += val;
147 const int outsz0 = insz0 > sz0 ? sz0 : insz0;
148 const int outsz1 = insz1 > sz1 ? sz1 : insz1;
150 for (
int idx0=0; idx0<outsz0; idx0++ )
152 for (
int idx1=0; idx1<outsz1; idx1++ )
155 for (
int idx=0; idx<sz1; idx++ )
156 get( idx0, idx1 ) += in.
get( idx0, idx1 );
166 for (
int idx0=0; idx0<sz0; idx0++ )
167 for (
int idx1=0; idx1<sz1; idx1++ )
168 get( idx0, idx1 ) *= fac;
176 copy.getProduct( in, *
this );
180 #define mA2DMatHandleDimErr(v1,v2) \
183 BufferString emsg( "Dim error: " #v1 "=", v1, " " #v2 "=" ); \
184 emsg.add( v2 ); pErrMsg( emsg ); \
186 const_cast<int&>( v2 ) = v1; \
188 const_cast<int&>( v1 ) = v2; \
198 const int outsz0 = insz0 > sz0 ? sz0 : insz0;
199 const int outsz1 = insz1 > sz1 ? sz1 : insz1;
202 for (
int idx0=0; idx0<outsz0; idx0++ )
204 for (
int idx1=0; idx1<outsz1; idx1++ )
207 for (
int idx=0; idx<sz1; idx++ )
208 out.
set( idx0, idx1, get(idx0,idx1) + in.
get(idx0,idx1) );
223 for (
int idx0=0; idx0<sz0; idx0++ )
226 for (
int idx1=0; idx1<sz1; idx1++ )
227 res += get( idx0, idx1 ) * vin.
get( idx1 );
228 vout.
set( idx0, res );
242 for (
int idx0=0; idx0<sz0; idx0++ )
244 for (
int idx1=0; idx1<insz1; idx1++ )
247 for (
int idx=0; idx<sz1; idx++ )
248 res += in.
get( idx, idx1 ) * get( idx0, idx );
249 out.
set( idx0, idx1, res );
259 copy.getTransposed( *
this );
269 for (
int idx0=0; idx0<sz0; idx0++ )
271 for (
int idx1=0; idx1<sz1; idx1++ )
272 out.
set( idx1, idx0, get( idx0, idx1 ) );
286 for(
int idx0=0; idx0<sz0; idx0++ )
288 for (
int idx1=0; idx1<=idx0; idx1++ )
291 for (
int j=0; j<idx1; j++ )
292 sum += out.
get( idx0, j ) * out.
get( idx1, j );
297 val = get( idx0, idx0 ) - sum;
304 const fT dividend = get( idx0, idx1 ) - sum;
305 const fT divideby = out.
get( idx1, idx1 );
307 val = dividend / divideby;
311 out.
set( idx0, idx1, val );
void multiply(fT)
Definition: array2dmatrix.h:163
int size(bool dim1=false) const
Definition: array2dmatrix.h:85
const Array1DInfo & info() const
Definition: arrayndimpl.h:75
virtual T get(int p0, int p1) const =0
void getTransposed(Array2DMatrix &)
Definition: array2dmatrix.h:264
bool isFPEqual(T1 v1, T2 v2, eT eps)
Definition: commondefs.h:39
bool isEq(const Array2D< fT > &, fT eps=fT(1e-6)) const
Definition: array2dmatrix.h:103
#define od_int64
Definition: plftypes.h:35
#define mDefineA2DMatSizes(m, nm)
easily define the matrix dimension sizes
Definition: array2dmatrix.h:80
virtual int getSize(int dim) const =0
#define mA2DMatHandleDimErr(v1, v2)
Definition: array2dmatrix.h:180
bool operator==(const ArrayNDInfo &a1, const ArrayNDInfo &a2)
Definition: arrayndinfo.h:81
void getSum(const Array2DMatrix &, Array2DMatrix &) const
Definition: array2dmatrix.h:193
void set(int pos, T)
Definition: arrayndimpl.h:409
void add(const Array2DMatrix &)
Definition: array2dmatrix.h:143
void set(int i0, int i1, fT v)
Definition: array2dmatrix.h:54
void setAll(fT v=fT(0))
Definition: array2dmatrix.h:58
fT & get(int i0, int i1)
Definition: array2dmatrix.h:92
fT get(int i0, int i1) const
Definition: array2dmatrix.h:56
#define mClass(module)
Definition: commondefs.h:181
bool setSize(int)
Definition: arrayndimpl.h:450
Array2DImpl< fT > a2d_
Definition: array2dmatrix.h:74
void set(T &_to, const F &fr)
template based type conversion
Definition: convert.h:27
void copy(OD::ValVec< T, IT > &to, const OD::ValVec< S, IT > &from)
Definition: typeset.h:255
void setToIdentity()
Definition: array2dmatrix.h:60
Matrix class based on Array2D. Initialized to 0.
Definition: array2dmatrix.h:32
void multiply(const Array2DMatrix &)
Definition: array2dmatrix.h:173
Array2DMatrix(const Array2DMatrix &oth)
Definition: array2dmatrix.h:37
void transpose()
Definition: array2dmatrix.h:256
void add(fT)
Definition: array2dmatrix.h:133
void getProduct(const Array1DVector &, Array1DVector &) const
Definition: array2dmatrix.h:215
Array2DMatrix(const Array2DImpl< fT > &a2d)
Definition: array2dmatrix.h:39
Array2DMatrix(const Array2D< fT > &a2d)
Definition: array2dmatrix.h:41
#define mDefineImplA2DMatSizes
Definition: array2dmatrix.h:99
bool setSize(int, int)
Definition: arrayndimpl.h:565
bool getCholesky(Array2DMatrix &) const
Definition: array2dmatrix.h:278
T get(int pos) const
Definition: arrayndimpl.h:421
void getProduct(const Array2DMatrix &, Array2DMatrix &) const
Definition: array2dmatrix.h:234
Array2DMatrix(int sz0=1, int sz1=0)
Definition: array2dmatrix.h:34
void setDiagonal(fT)
Definition: array2dmatrix.h:122
Array1DImpl< float > Array1DVector
Definition: array2dmatrix.h:20
Generated at
for the OpendTect
seismic interpretation project.
Copyright (C): dGB Beheer B.V. 1995-2021