Main Content


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.


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

Extended Capabilities

Version History

Introduced before R2006a

See Also