X-Git-Url: http://git.tdb.fi/?a=blobdiff_plain;f=source%2Flinal%2Fmatrix.h;h=929c48247e517aa47d837df1438c94465e25064a;hb=ffb043ce670d733decc03c6e4240a4e6d980caec;hp=6c04454296e51ae2162e0534f1def87fa379afac;hpb=b24bbb85291644791a3206ff7f0ab0308faeadc9;p=libs%2Fmath.git diff --git a/source/linal/matrix.h b/source/linal/matrix.h index 6c04454..929c482 100644 --- a/source/linal/matrix.h +++ b/source/linal/matrix.h @@ -8,7 +8,7 @@ namespace Msp { namespace LinAl { /** -A general mathematical matrix. +A general mathematical matrix with M rows and N columns. */ template class Matrix @@ -30,6 +30,9 @@ public: T &operator()(unsigned i, unsigned j) { return element(i, j); } const T &operator()(unsigned i, unsigned j) const { return element(i, j); } + template + Matrix block(unsigned, unsigned) const; + Matrix &operator*=(T); Matrix &operator/=(T); Matrix &operator+=(const Matrix &); @@ -68,6 +71,7 @@ inline Matrix Matrix::from_columns(const Vector *v) for(unsigned i=0; i @@ -77,6 +81,18 @@ inline Matrix Matrix::from_rows(const Vector *v) for(unsigned i=0; i +template +inline Matrix Matrix::block(unsigned y, unsigned x) const +{ + Matrix r; + for(unsigned j=0; j