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/