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 data question
From
tzygmund mcfarlane <[email protected]>
To
[email protected]
Subject
Re: st: Mata data question
Date
Mon, 1 Aug 2011 10:51:30 -0700
The syntax for -spmat putmatrix- (part of -sppack-, by Drukker, Peng,
Prucha, and Raciborski, SSC) is:
spmat putmatrix objname matname [vecname] [, options]
And although the Mata code is only available as compiled library, I
would guess that the object that -spmat putmatrix- saves is
essentially a Mata matrix with frills. So, issuing the replace option
clears any previous matrix with given "objname" (in this case, "G")
first and then tries to save "matname" (in this case, also "G") to
that location.
So for example, this code will work:
/****************************************/
clear*
mata
void blkdiag(real matrix gr, real matrix G_in, real matrix G_out) {
if (G_in == .) G_out = gr
else G_out = blockdiag(G_in, gr)
}
end
mata: blkdiag(J(3,3,1)-I(3),G=.,G)
mata: blkdiag(J(2,2,1)-I(2),G,G)
mata: blkdiag(J(4,4,1)-I(4),G,G)
mata: G
spmat putmatrix newobj G, replace
spmat summarize newobj
/****************************************/
On Mon, Aug 1, 2011 at 10:25 AM, Benjamin Allaire <[email protected]> wrote:
> Hi -
>
> I am a bit confused about what exactly mata keeps in memory. Why doesn't this code work? Why does G go away?
>
> Thanks in advance!
>
> Ben
>
> .
> . mata:
> ------------------------------------------------- mata (type end to exit) ------------------------------------------------------------------------------------------------------------------------------
> : void blkdiag(real matrix gr, real matrix G_in, real matrix G_out) {
>> if (G_in == .) G_out = gr
>> else G_out = blockdiag(G_in, gr)
>> }
>
> : end
> --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
>
> .
> .
> . mata: blkdiag(J(3,3,1)-I(3),G=.,G)
>
> . mata: blkdiag(J(2,2,1)-I(2),G,G)
>
> . mata: blkdiag(J(4,4,1)-I(4),G,G)
>
> .
> . mata: G
> [symmetric]
> 1 2 3 4 5 6 7 8 9
> +-------------------------------------+
> 1 | 0 |
> 2 | 1 0 |
> 3 | 1 1 0 |
> 4 | 0 0 0 0 |
> 5 | 0 0 0 1 0 |
> 6 | 0 0 0 0 0 0 |
> 7 | 0 0 0 0 0 1 0 |
> 8 | 0 0 0 0 0 1 1 0 |
> 9 | 0 0 0 0 0 1 1 1 0 |
> +-------------------------------------+
>
> .
> . spmat putmatrix G G, replace
> <istmt>: 3499 G not found
> r(3499);
>
>
> *
> * 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/
>
*
* 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/