Sparse symmetric random matrix


R = sprandsym(S)
R = sprandsym(n,density)
R = sprandsym(n,density,rc)
R = sprandsym(n,density,rc,kind)
R = sprandsym(S,[],rc,3)


R = sprandsym(S) returns a symmetric random matrix whose lower triangle and diagonal have the same structure as S. Its elements are normally distributed, with mean 0 and variance 1.

R = sprandsym(n,density) returns a symmetric random, n-by-n, sparse matrix with approximately density*n*n nonzeros; each entry is the sum of one or more normally distributed random samples, and (0 <= density <= 1).

R = sprandsym(n,density,rc) returns a matrix with a reciprocal condition number equal to rc. The distribution of entries is nonuniform; it is roughly symmetric about 0; all are in [−1,1].

If rc is a vector of length n, then R has eigenvalues rc. Thus, if rc is a positive (nonnegative) vector then R is a positive (nonnegative) definite matrix. In either case, R is generated by random Jacobi rotations applied to a diagonal matrix with the given eigenvalues or condition number. It has a great deal of topological and algebraic structure.

R = sprandsym(n,density,rc,kind) is positive definite.

  • If kind = 1, R is generated by random Jacobi rotation of a positive definite diagonal matrix. R has the desired condition number exactly.

  • If kind = 2, R is a shifted sum of outer products. R has the desired condition number only approximately, but has less structure.

R = sprandsym(S,[],rc,3) has the same structure as the matrix S and approximate condition number 1/rc.

More About

expand all


sprandsym uses the same random number generator as rand, randi, and randn. You control this generator with rng.

See Also


Introduced before R2006a

Was this topic helpful?