RandCondMat

Generates a random square matrix of given size, condition number, and optionally - norm.

You are now following this Submission

A = RANDCONDMAT(n, cond, options)
Generates a random n x n matrix with the condition number equal to cond.

A = RANDCONDMAT(...,'symmetric')
Generates a symmetric A.

A = RANDCONDMAT(...,'positive')
Generates a positive definite (either symmetric or not) A.

A = RANDCONDMAT(...,'norm', nrm)
Forces A's matrix norm to equal nrm. Defaults to 1.

This utility can be useful in various tests of numerical algorithms. Example:

n=100;
nchecks = 100
t=zeros(nchecks,1);
er=zeros(nchecks,1);

for i=1:nchecks;
cnd = 30*i;
A = RandCondMat(n,cnd,'symmetric','positive');
b= rand(n,1);
tic; x = pcg(A,b); t(i)=toc;
er(i) = norm(b - A*x);
end
plot ([er,1000*t]); legend('absolute error','time (ms)')

REMARK:
Do not make any assumptions about the distribution of the drawn matrices - specifically, it is not uniform with respect to the induced Lebesgue measure in R^(n^2). The most that can be said is that any matrix in a specified category (e.g., symmetric+positive) is reacheble in principle, using the implemented algorithms.

Cite As

Ofek Shilon (2026). RandCondMat (https://se.mathworks.com/matlabcentral/fileexchange/11782-randcondmat), MATLAB Central File Exchange. Retrieved .

General Information

MATLAB Release Compatibility

  • Compatible with any release

Platform Compatibility

  • Windows
  • macOS
  • Linux
Version Published Release Notes Action
1.0.0.0

warning remarks added, support for positive + non-symmetric restored (using a different algorithm).