Bookmark and Share

Notice: On April 23, 2014, Statalist moved from an email list to a forum, based at statalist.org.


[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

st: MATA function modifies global variables


From   George Vega Yon <[email protected]>
To   [email protected]
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/


© Copyright 1996–2018 StataCorp LLC   |   Terms of use   |   Privacy   |   Contact us   |   Site index