pb with oct file, return a matrix

John W. Eaton jwe at octave.org
Wed Apr 22 11:40:23 CDT 2009


On 22-Apr-2009, Alain Baeckeroot wrote:

| Le 22/04/2009 à 17:50, John W. Eaton  écrit :
| > 
| ....
| > 
| > Does it work if you simplify your function to be just the following:
| > 
| >   DEFUN_DLD( boucle_cc, args, nargout, "usage : rMat = boucle_cc(..)\n") {
| > 	  int NDATA=10000;
| > 	  Matrix rMat(NDATA, 22, 0.0);	// results
| > 	  octave_value_list retval;   // list of return values
| > 	  retval(0) = rMat;
| > 	  return retval;
| >   }
| 
| yes it works.
| 
| > ?  If so, then I'd guess that you have some problem in the
| > 
| > | 	...compute and put everything in rMat...
| > 
| > part.  Given the error message you see, I'd guess that you are writing
| > outside the bounds of the rMat array.  But that's just a guess.
| 
| i'm digging this way.

If you use the C++ Array indexing operators to access the elements of
rMat, then you can try

  mkoctfile -DBOUNDS_CHECKING=1 ...

and you should see an error message when you run your code if you
attempt to access an element of rMat that is out of bounds.

If you access the elements with

  double *ptr = rMat.fortran_vec ();

then you are on your own...

jwe



More information about the Help-octave mailing list