-
Login or Register
- Log in with
. type http://www.stata.com/stb/stb39/dm49/matsum.ado *! 1.0.4 18Jun1997 Jeroen Weesie/ICS STB-39 dm49 program define matsum version 5.0 * scratch tempname A OneC OneR * parse input if "`*'" == "" { exit } parse "`*'", parse(",") local A0 "`1'" capt mat `A' = `A0' if _rc { di in red "`A0' is undefined or an illegal matrix expression" exit 198 } local nr = rowsof(`A') local nc = colsof(`A') mac shift local options " All(str) Column(str) Display Format(str) Row(str)" parse "`*'" if "`format'" != "" { local fmt "format(`format')" } * defaults if "`row'"=="" & "`column'"=="" & "`all'"=="" { local column "." } if "`row'"=="." { tempname Row local row "`Row'" local display "display" } if "`column'"=="." { tempname Col local column "`Col'" local display "display" } if "`all'"=="." { tempname All local all "`All'" local display "display" } mat `OneC' = J(`nc',1,1) mat `OneR' = J(1,`nr',1) if "`row'" != "" { * compute row sums as a column vector mat `row' = `A' * `OneC' if "`display'" != "" { di in gr _n "row-wise sums of matrix `A0'[`nr',`nc']" mat list `row', noheader `fmt' } } if "`column'" != "" { * compute column sums as a row vector mat `column' = `OneR' * `A' if "`display'" != "" { di in gr _n "column-wise sums of matrix `A0'[`nr',`nc']" mat list `column', noheader `fmt' } } if "`all'" != "" { * sum over all elements if "`row'" != "" { mat `all' = `OneR' * `row' } else if "`column'" != "" { mat = `all' * `OneC' } else { mat `all' = `A' * `OneC' mat `all' = `OneR' * `all' } if "`display'" != "" { if "`format'" == "" { local format "%10.2g" } di _n in gr "sum of elements of `A0'[`nr',`nc'] = " /* */ in ye `format' `all'[1,1] } } end
matrix mad = r(mad)
. matrix mad = (1,2,3) . mata : st_numscalar("sum", sum(st_matrix("mad"))) . di scalar(sum) 6
. mat foo = J(1, 22, 1) . mat sum = J(1,22,1) * foo' . mat li sum symmetric sum[1,1] r1 r1 22
Comment