Cómo encontrar si una matriz es Singular en Matlab

Utilizo la siguiente función para generar las betas para un conjunto dado de conjeturas de mi optimizador.

Cuando corro a menudo recibo el siguiente mensaje de advertencia:

Advertencia: Matrix es singular a la precisión de trabajo. En NSS_betas en 9 En DElambda en 19 En Individual_Lambdas en 36

Me gustaría poder excluir cualquier beta que forme una matriz singular del conjunto de soluciones, sin embargo, ¿no sé cómo probarlo?

He estado tratando de usar rcond () pero no sé dónde hacer el corte entre singular y no singular.

Seguramente si Matlab está generando el mensaje de advertencia, ya sabe si la matriz es singular o no, así que si pudiera encontrar dónde estaba almacenada esa variable, ¿podría usar eso?

function betas=NSS_betas(lambda,data)

mats=data.mats2'; 
lambda=lambda;
yM=data.y2';
nObs=size(yM,1);
G= [ones(nObs,1) (1-exp(-mats./lambda(1)))./(mats./lambda(1)) ((1-exp(-mats./lambda(1)))./(mats./lambda(1))-exp(-mats./lambda(1))) ((1-exp(-mats./lambda(2)))./(mats./lambda(2))-exp(-mats./lambda(2)))];

betas=G\yM;
r=rcond(G);

end

Gracias por el consejo:

Probé los tres ejemplos a continuación después de configurar los valores de lambda para que sean iguales, así que guiando una matriz singular

 if (~isinf(G))
  r=rank(G);
  r2=rcond(G);
  r3=min(svd(G)); 
 end

r = 3, r2 = 2.602085213965190e-16; r3 = 1,075949299504113e-15;

Así que en esta prueba, el rango () y rcond () funcionaron asumiendo que tomo los valores de referencia como se indica a continuación.

Sin embargo, ¿qué sucede cuando tengo dos valores que están cerca pero no son exactamente iguales?

¿Cómo puedo decidir lo que está demasiado cerca?