Thanks for your response, Barry. I am going to solve A_n x = b for different A_n's. The difference between A_n's are only the main diagonal and the k-th diagonal. I want to generate the matrix A once, and each time modify the main and k-th diagonals to get a new A_n. That's the reason I am asking for efficient way to get and set k-th diagonal. I may not need to get the k-th diagonal if I keep the adding difference between each n. However, I still need to set the k-th diagonal anyway.
More precisely, suppose my N-by-N matrix A=[a1, a2; a3, a4], where a1, a2, a3 and a4 are n/2-by-n/2 sub-matrix. I am trying to modify the diagonals of a1, a2, a3 and a4, which is the main and n/2-th diagonal of A. Thanks. Xiangdong On Fri, May 6, 2011 at 5:04 PM, Barry Smith <bsmith at mcs.anl.gov> wrote: > > ?How are you planning to use these diagonals? This might help us make > suggestions as to what is a reasonable approach. Accessing diagonals is not a > natural operation for sparse matrices stored by rows or columns. > > ? Barry > > > > On May 6, 2011, at 3:56 PM, Xiangdong Liang wrote: > >> Hello everyone, >> >> I am wondering whether there is some function like MatGetDiagonal to >> get the k-th diagonal (above or below the main diagonal) of the matrix >> A. If I have to write my own function, what built-in function should I >> use to get a particular element of A? It seems that MatGetValues >> returns a block of matrix. I guess if I only extract one element once, >> it would not be efficient. Any suggestions? Thanks. >> >> Best, >> Xiangdong > >
