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]

Re: st: Mata void functions and pointers


From   Matthew Baker <matthew.baker@hunter.cuny.edu>
To   statalist@hsphsun2.harvard.edu
Subject   Re: st: Mata void functions and pointers
Date   Thu, 17 May 2012 17:52:41 -0400

Brendan (and others):

I should have been more clear! I would certainly prefer to use a
vector to collect the elements, but the objects I'm collecting are of
unknown dimension which is not known in advance, so perhaps I should
have used an example like:

/* Begin example */
clear all
mata
void example(A,B,Ab) Ab=J(A+round(3*runiform(1,1)),B,1)
P=J(3,1,NULL)
for (i=1;i<=3;i++) {
	example(i,i,Ab=.)
	Ab
	P[i]=&Ab
				   }

/* display results */

for (i=1;i<=3;i++) *P[i]
end
/* end example */

I have thought about trying to readjust the dimensions of the vector
every time it is a little different, but this seems kind of clumsy and
I was hoping for a better alternative.

Thanks again!

Matt Baker


On Thu, May 17, 2012 at 5:10 PM, Brendan Halpin <brendan.halpin@ul.ie> wrote:
> On Thu, May 17 2012, Matthew Baker wrote:
>
>> Dear listers:
>>
>>      I have a problem in which I am trying to populate the elements of
>> a pointer with the results of a function. The problem is, the function
>> is void and returns its results through an argument, which makes
>> getting results into a pointer nontransparent. As a simple example,
>> consider the following:
>
> Perhaps I misunderstand your purpose: I assume you want a vector of
> results, not necessarily pointers to a result.
>
> This code achieves that:
>
> /* Begin example */
> clear all
> mata
> void example(A,B,Ab) Ab=A*B
>
> P=J(3,1,0) // <--- 0 not NULL
>
> Ab = .     // <--- needs to exist
>
> for (i=1;i<=3;i++) {
>   example(i,i,Ab)
>
>   P[i]=Ab // <--- No "&"
>
>   }
>
> /* Display results */
>
> for (i=1;i<=3;i++) {
>        P[i]   // <--- no need to dereference
>   }
> end
> /* end example */
>
>
> Regards,
>
> Brendan
> --
> Brendan Halpin,   Department of Sociology,   University of Limerick,   Ireland
> Tel: w +353-61-213147  f +353-61-202569  h +353-61-338562;  Room F1-009 x 3147
> mailto:brendan.halpin@ul.ie    ULSociology on Facebook: http://on.fb.me/fjIK9t
> http://teaching.sociology.ul.ie/bhalpin/wordpress         twitter:@ULSociology
> *
> *   For searches and help try:
> *   http://www.stata.com/help.cgi?search
> *   http://www.stata.com/support/statalist/faq
> *   http://www.ats.ucla.edu/stat/stata/



-- 
Dr. Matthew J. Baker
Department of Economics
Hunter College and the Graduate Center, CUNY

*
*   For searches and help try:
*   http://www.stata.com/help.cgi?search
*   http://www.stata.com/support/statalist/faq
*   http://www.ats.ucla.edu/stat/stata/


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