matlab出现了奇异矩阵,如何在Matlab中找到矩阵是否是奇异的

我使用下面的函数从我的优化器生成给定的一组猜测lambdas的betas.

运行时,我经常会收到以下警告消息:

警告:矩阵对工作精度是单数.

在NSS_betas在9

在19岁的DElambda

在36岁的Individual_Lambdas

我想要排除形成解决方案集合中的单数矩阵的任何betas,但是我不知道如何测试它?

我一直在尝试使用rcond(),但是我不知道在单数和非奇异之间切断哪里?

当然,如果Matlab正在生成警告消息,它已经知道矩阵是否是单数,如果我可以找到存储变量的位置,我可以用吗?

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

感谢您的建议:

在将lambda值设置为相等后,我测试了以下所有三个示例,以便得到一个单数矩阵

if (~isinf(G))

r=rank(G);

r2=rcond(G);

r3=min(svd(G));

end

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

所以在这个测试中,rank()和rcond()工作,假设我拿下面给出的基准值.

然而,当我有两个接近但不完全相同的值时会发生什么?

我如何决定什么是太近?

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值