我正在使用 Matlab 计算矩阵的秩为:
r=rank(A, tol)
哪里A
是矩阵,tol
是公差。当矩阵很小时,似乎没有问题。但是当矩阵很大时,matlab 经常返回错误,说不SVD
应该有NAN
或INF
作为输入。
据我了解,秩计算算法应该返回一个矩阵的数字,但是当我看到这样的错误时,我想知道是否存在无法计算秩的特殊矩阵。有没有更好的方法来计算 Matlab 中的排名?我正在寻找一种可靠的算法来计算矩阵的秩!为什么秩计算算法对某些矩阵如此敏感?
编辑:请检查这种依赖tol
:
等级(魔法(100),10e-10)
答案=
3
等级(魔法(100),10e-30)
答案=
100
我基本上是在计算我正在检查秩条件的线性系统的可控性矩阵。矩阵大小为 100x100 到 200x200。所以rank的输入如下
A= ctrb (P, Q) % P, Q are matrices in the LTI system X[n+1]=P*x[n]+ Q*U[n]
r=rank(A, tol)
那么,问题是可控性函数能否ctrb
生成带有 INF 或 NAN 的矩阵?基于可控性矩阵的定义:
A= [Q P*Q P^2*Q, ...P^n-1*Q]
如果 P 和 Q 是任何有界值的矩阵,A 可以有 INF 还是 NAN?我期望使用ctrb
任何有界 P、Q 矩阵对 A 的上述计算不能产生带有 NAN 或 INF 的矩阵输出。