On Fri, Feb 25, 2011 at 11:26 AM, Mingo <[email protected]> wrote: > Hello, I'm attempting to access a specific number of sub diagonals in a > MATRIX and have been accustomed to using spdiags in MATLAB or Octave. I've > got a solution pieced together using for loops and it works though isn't > vectorized and liable to run very slow > for large matrices. > > As an example: > > A = > 1 2 3 4 5 > 9 8 7 6 5 > 4 5 6 7 8 > 5 4 3 2 1 > 8 7 6 0 1 > > The subdiagonals are: 9,5,3,0 4,4,6 5,7 and 8, > I know about lower.tri and can fetch the data in a resulting vector > which ,in this case, would be: > > 9,4,5,8,5,4,7,3,6,0 > > though I would have to manipulate this some more to extract the other > diagonals (imagine this being done for say a 1000 x 1000 matrix). I looked > at CRAN and didn't see anything corresponding to > spdiags. The closest package appeared to be the one relating to sparse > matrices and band symmetry. Would you have any suggestions about 1) how to > emulate spdiags or 2) working with the lower.tri returned-data and > extracting the remaining diags efficiently. I can live with what I have but > imagine that there is something more direct. Thanks
A[ col(A) == row(A) - i ] is the ith subdiagonal -- Statistics & Software Consulting GKX Group, GKX Associates Inc. tel: 1-877-GKX-GROUP email: ggrothendieck at gmail.com ______________________________________________ [email protected] mailing list https://stat.ethz.ch/mailman/listinfo/r-help PLEASE do read the posting guide http://www.R-project.org/posting-guide.html and provide commented, minimal, self-contained, reproducible code.

