Statalist


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

Re: st: re matrix substitution


From   Tirthankar Chakravarty <tirthankar.chakravarty@gmail.com>
To   statalist@hsphsun2.harvard.edu
Subject   Re: st: re matrix substitution
Date   Sat, 22 Aug 2009 16:06:55 +0100

I don't fully understand what you are trying to do. Why are you
passing `touse' as an argument to -mysubsi-?

Here is a slightly amended version of -mysusbsi-:
**************************************
/* matrix substitution */
clear mata
capture mata mata drop mysubsi()
mata
real matrix mysubsi(real matrix A, real scalar thresh)
{
	real matrix C
	C = J(rows(A), cols(A), 0)
	for(i=1; i<=rows(A); i++) {
		for(j=1; j<=cols(A); j++) {
			if (A[i,j]<= thresh) C[i,j] =0
			else C[i,j] = A[i,j]
		}
	}
    return(C)
}

mata mosave mysubsi(), dir(e:\stata) replace
// an example
A = (1, 2, 3\ 9, 8, 1)
mysubsi(A, 3)
end
**************************************

T







On Sat, Aug 22, 2009 at 10:52 AM, Marwan
Elkhoury<elkhoury.marwan@gmail.com> wrote:
> dear statalist,
>
> sorry to bother you with this minor pblm but I'm not familiar with the
> stata mata environment , more familiar with the matlab matrix
> environment.  anyway, I wish to substitute some matrix factor loadings
> which are negative or small to zero and keep the others identical.
> Now, I've written naively some piece of codes to do that and it's not
> working, either because I'm not writing the pgm correctly or not
> saving it correctly in the right place or not calling the function
> correctly; so the codes are for stata 10 version and are the following:
>
> /* matrix substitution */
>
>  program mysubsi
>                 version 10
>                 syntax varname [if] [in]
>                    marksample touse
>                 mata: mysubsi(string st_matrix("A"), "`touse'")
>                 display as txt "  C = " as res r(C)
>         end
>
>
> capture mata mata drop mysubsi()
> mata
> real matrix mysubsi(real matrix A, real scalar thresh)
> {
>   real scalar r, c
>   real matrix C
>     r=rows(A)
>     c=cols(A)
>     for(i=1;i<=r;i++) {
>       for(j=1;j<=c;j++) {
>        if (A[i,j]< thresh) {
>        C[i,j] =0
> }
> else {
>        C[i,j] = A[i,j]
> }
>  }
>  }
>        return(C)
>   }
>
> mata mosave mysubsi(), dir(c:\ado\personal\m) replace
> end
>
> /// end of pgm
>
> then I try to call the function, writing:
> mata: mysubsi("A", "`touse'")
> mata: mysubsi("entering the real matrix function which I want to
> perform change upon", thresh number)
>
> I'm surely missing on something and any help would be greatly
> appreciated.
>
> sincerely yours,
>
> Marwan
>
>
> *
> *   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/
>



-- 
To every ω-consistent recursive class κ of formulae there correspond
recursive class signs r, such that neither v Gen r nor Neg(v Gen r)
belongs to Flg(κ) (where v is the free variable of r).

*
*   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–2014 StataCorp LP   |   Terms of use   |   Privacy   |   Contact us   |   What's new   |   Site index