Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/matlab/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Matlab 大矩阵的秩产生误差_Matlab_Matrix_Rank - Fatal编程技术网

Matlab 大矩阵的秩产生误差

Matlab 大矩阵的秩产生误差,matlab,matrix,rank,Matlab,Matrix,Rank,我使用Matlab计算矩阵的秩,如下所示: r=rank(A, tol) 其中A是矩阵,tol是公差。当矩阵很小时,似乎没有问题。但是,当矩阵较大时,matlab经常返回错误,指出SVD不应将NAN或INF作为输入 就我的理解而言,秩计算算法应该为矩阵返回一个数字,但当我看到这样的错误时,我想知道是否存在无法计算秩的特殊矩阵。有没有更好的方法在Matlab中计算秩?我正在寻找一个可靠的算法来计算矩阵的秩!为什么秩计算算法对某些矩阵如此敏感 编辑:请检查对tol的依赖性: 等级(魔法(100),

我使用Matlab计算矩阵的秩,如下所示:

r=rank(A, tol)
其中
A
是矩阵,
tol
是公差。当矩阵很小时,似乎没有问题。但是,当矩阵较大时,matlab经常返回错误,指出
SVD
不应将
NAN
INF
作为输入

就我的理解而言,秩计算算法应该为矩阵返回一个数字,但当我看到这样的错误时,我想知道是否存在无法计算秩的特殊矩阵。有没有更好的方法在Matlab中计算秩?我正在寻找一个可靠的算法来计算矩阵的秩!为什么秩计算算法对某些矩阵如此敏感

编辑:请检查对
tol
的依赖性:

等级(魔法(100),10e-10)

ans=

等级(魔法(100),10e-30)

ans=

一百

我基本上是在计算一个线性系统的可控性矩阵,我在检查它的秩条件。矩阵大小的顺序为100x100到200x200。因此,排名的输入如下

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的矩阵输出。

这很奇怪,因为
rank
做的第一件事是
svd(A)
。因此,如果
svd
抱怨无限或NaN值,那么这些值如何出现在
A
中?您确定它们一开始不在
A
中吗?矩阵有多大?是否确定矩阵中没有nan或inf值?
A= [Q P*Q P^2*Q, ...P^n-1*Q]