sacrificial lamb
Don't. If you're using version 9.2, why not do this in Mata? C
plugins are cumbersome and platform-specific. The speed penalty of
Mata over C code is not likely to be very large on any decently fast
machine.
Kit
Kit Baum, Boston College Economics
http://ideas.repec.org/e/pba1.html
An Introduction to Modern Econometrics Using Stata:
http://www.stata-press.com/books/imeus.html
On Sep 17, 2006, at 2:33 AM, Tom wrote:
> I have problems to understand the ST_mat_el() and ST_mat_store()
> commands that pass matrices between Stata and my plugin. Here is my
> example program:
>
> program matrixAtoB
> version 9.2
> tempname inmat outmat
> mat `inmat' = (1,2 \ 3,4)
> mat `outmat ' = ([.,.] \ [.,.])
> plugin call intooutmat, `inmat' `outmat'
> matrix list `B'
> end
>
> The task is to pass both matrices (inmat and outmat) to the plugin.
> Then access inmat and get all of its contents into a C variable, then
> possibly do some computations with this variable in C and finally
> store the results (which happen to have the same dimensions as the
> inpmat) into outmat so Stata can access the output of my computation.
>
> For now, I can do this with a single elment of inmat:
>
> intooutmat.c :
>
> #include "stplugin.h"
>
> STDLL stata_call(int argc, char *argv[])
> {
> ST_double z ;
>
> SF_mat_el( argv[0] , 1 , 2 , &z ) ;
> SF_mat_store( argv[1] , 1 , 2 , z ) ;
>
> return(0) ;
> }
>
> This takes the element from the first row second column of inmat, puts
> it into z, and then puts z into the first row second column of outmat.
> But how can I access the WHOLE matrix inmat in the plugin (not just
> element by element) and pout it into outmat?
*
* For searches and help try:
* http://www.stata.com/support/faqs/res/findit.html
* http://www.stata.com/support/statalist/faq
* http://www.ats.ucla.edu/stat/stata/