57561 17

[问答] MATLAB在运行结果时出现警告: 矩阵接近奇异值,或者缩放错误。结果可能不准确。 [推广有奖]

1357小小 发表于 2019-3-25 22:13
我将每个数据扩大100倍,运行结果还是奇异矩阵。还有其他办法么?
那你要根据你自己的实证找下问题啦,造成奇异矩阵的原因应该有很多

使用道具

12
凉夕丶丶 发表于 2020-7-5 16:29:39 |只看作者 |坛友微信交流群
1357小小 发表于 2019-3-25 22:13
我将每个数据扩大100倍,运行结果还是奇异矩阵。还有其他办法么?
请问你 的问题解决了吗?我也是扩大100倍后还是奇异矩阵

使用道具

13
19920808aa 发表于 2021-3-26 15:46:25 |只看作者 |坛友微信交流群
凉夕丶丶 发表于 2020-7-5 16:29
请问你 的问题解决了吗?我也是扩大100倍后还是奇异矩阵
请问您的问题解决了吗

使用道具

14
zoeyhh 发表于 2022-6-24 15:17:19 |只看作者 |坛友微信交流群
我的矩阵里也有0值,只是特别特别小,乘了很大的数值之后结果也变了,还是报错,哎,太难搞了

使用道具

15
24颗米粒 学生认证  发表于 2022-12-6 19:01:40 |只看作者 |坛友微信交流群
zoeyhh 发表于 2022-6-24 15:17
我的矩阵里也有0值,只是特别特别小,乘了很大的数值之后结果也变了,还是报错,哎,太难搞了
遇到同样问题,请问解决了吗?

使用道具

16
abelus 发表于 2023-1-18 10:39:26 |只看作者 |坛友微信交流群
矩阵条件数过小,简单理解用均值特征值(的绝对值)最小值和最大值的比值来度量。
比如奇异矩阵(行列式等于0,或者很小)就是一个典型例子。
在数值计算的情况下,浮点数都有运算精度,哪怕不报错,计算的精度也堪忧。
在直接矩阵求逆运算的时候,最好用rcond看看矩阵的条件数,或者用eig、svd之类的看看最小的特征值是不是非常接近于0,如果是绝对值很小的数,通常求逆运算都不太可靠。
如果是做工程运算(计量模型等),说明建模基本不通,哪怕是能得到一个最终结果。需要寻找更好的模型形式,或者换针对性的“稳定”的算法,比如用“更为稳定”的矩阵分解算法。
如果实在是不能修改模型,硬要算,比如计量里面就有一个岭回归的方法,代表了一类思路,就是A+ eps*eye(N),把A这个近似奇异矩阵的对角线上“人为故意”加一些“扰动”,进而能得到一个结果。

至于有小伙伴提到inv(100*A)这种扩大矩阵A中大小的问题,通常是不改变实质性困难的,但是可能能通过“计算”,能计算结果和计算结果的稳定性有时候不是一回事。

使用道具

17
zzzzz⊙ 发表于 2023-5-11 20:12:43 |只看作者 |坛友微信交流群
1357小小 发表于 2019-3-25 22:13
我将每个数据扩大100倍,运行结果还是奇异矩阵。还有其他办法么?
我也是,我是使用meshgrid画图时遇到这个警告。同求解决方法!
不小心点错了踩了这层,抱歉uu~

使用道具

18
zsuphoenix 发表于 2023-7-20 10:22:34 |只看作者 |坛友微信交流群
奇异矩阵,结果的稳定性极差。楼主可能是因为数值太小才导致在计算过程中误认为是奇异矩阵,实际上矩阵本身不是奇异矩阵。而你这个数据本身可能就是奇异矩阵,数值扩大100倍也还是企业矩阵,改变不了。

使用道具

您需要登录后才可以回帖 登录 | 我要注册

本版微信群
加好友,备注cda
拉您进交流群

京ICP备16021002-2号 京B2-20170662号 京公网安备 11010802022788号 论坛法律顾问:王进律师 知识产权保护声明   免责及隐私声明

GMT+8, 2024-4-25 01:41