Notice: On April 23, 2014, Statalist moved from an email list to a forum, based at statalist.org.
From | George Vega Yon <g.vegayon@gmail.com> |
To | statalist@hsphsun2.harvard.edu |
Subject | st: MATA function modifies global variables |
Date | Thu, 6 Jun 2013 16:10:42 -0400 |
Dear Statalisters, I'm having a weird problem on variables' scope. I have a function that takes two objects (a real colvector and a matrix) wich, once inside the function, are transposed. This function returns a matrix (builded inside of the function of course). The problem is that the function seems to actually transpose the global objects (not only the copies within the function), thing that, as far as I know, should not be happening as I'm not using pointers to the global objects. My code looks something like this __________________________ mata: /* Function definition */ real colvector myfun(real colvector y, real matrix x) { real matrix z y = y' x = x' ... some code lines (no poiter to Y or X)... return(z) } Y = runiform(rows(neig),1) X = ( 0,0 \ 1,0 \ 1,1 \ 0,1 \ 1/2,1/2\ .9,1/2 \ .2,.5 \ .8,.3 ) /* Testing */ timer_clear() for(i=1;i<=100;i++) { timer_on(1) YC = blop_vec(Y,X) timer_off(1) } timer() end __________________________ I get the error __________________________ myfun: 3203 Y[1,8] found where colvector required <istmt>: - function returned error __________________________ Thanks in advanced, George Vega Yon 7 647 2552 http://cl.linkedin.com/in/georgevegayon * * For searches and help try: * http://www.stata.com/help.cgi?search * http://www.stata.com/support/faqs/resources/statalist-faq/ * http://www.ats.ucla.edu/stat/stata/