diff --git a/Numeric/fullMatrix.h b/Numeric/fullMatrix.h
index da87ddb23f88060bde412b2ac51ecf56f4ee2a81..94fd3c8f07432e93c2f1e46369a3f106ffe3b0e6 100644
--- a/Numeric/fullMatrix.h
+++ b/Numeric/fullMatrix.h
@@ -173,6 +173,20 @@ class fullMatrix
   }
   fullMatrix() : _own_data(false),_r(0), _c(0), _data(0) {}
   ~fullMatrix() { if(_data && _own_data) delete [] _data; }
+
+  bool resize(int r, int c) // data will be owned (same as constructor)
+  {
+    if ((r!=_r||c!=_c)||(!_own_data))
+    {
+      _r=r;_c=c;
+      if ((_own_data)&&(_data)) delete[] _data;
+      _data = new scalar[_r * _c];
+      _own_data = true;
+      return true;
+    }
+    return false; // no reallocation
+  }
+
   void setAsProxy(fullMatrix<scalar> &original, int c_start, int c) {
     if(_data && _own_data)
       delete [] _data;