Como descobrir se uma matriz é Singular no Matlab

Eu uso a função abaixo para gerar os betas para um determinado conjunto de guess lambdas do meu otimizador.

Ao executar, muitas vezes recebo a seguinte mensagem de aviso:

Aviso: A matriz é singular para precisão de trabalho. Em NSS_betas em 9 de dezembro em 19 em Individual_Lambdas em 36

Gostaria de poder excluir quaisquer betas que formem uma matriz singular no conjunto de soluções, no entanto não sei como testar?

Eu tenho tentado usar o rcond (), mas eu não sei onde fazer o corte entre singular e não singular?

Certamente, se o Matlab está gerando a mensagem de aviso, ele já sabe se a matriz é singular ou não, então se eu pudesse encontrar onde aquela variável estava armazenada eu poderia usar isso?

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

Obrigado pelo conselho:

Eu testei todos os três exemplos abaixo depois de definir os valores de lambda como iguais, de modo a conseguir uma 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;

Então, neste teste, rank () e rcond () funcionaram, assumindo que eu tomei os valores de benchmark como dado abaixo.

No entanto, o que acontece quando eu tenho dois valores próximos, mas não exatamente iguais?

Como posso decidir o que está próximo demais?

questionAnswers(5)

yourAnswerToTheQuestion