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<[email protected]> 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/