0

我有一个点集 P,我通过 k-最近邻构造它的相邻矩阵 A。A的每一行是[...+1...-1...],表示一对相邻点。A 的大小是 48348 x 8058,sprank(A) 是 8058。但是当我执行以下操作时,它会给我一个警告:“警告:等级不足,等级 = 8055,tol = 8.307912e-10。”

a=A*b;c=A\a;

norm(cb) 相当大。相邻矩阵A似乎有问题,但我无法弄清楚。提前致谢!

4

1 回答 1

0

sprank仅告诉您矩阵的多少行/列具有非零元素,同时A\b报告矩阵的实际等级,这表明矩阵的多少行是线性无关的。例如,对于以下矩阵:

A = [-1  1  0  0;
      0  1 -1  0;
      1  0 -1  0; 
      0  0  1 -1]

sprank(A)是 4 但rank(A)只有 3,因为您可以将第三行写为其他行的线性组合,特别是A(2,:) - A(1,:).

您需要解决的问题是您的计算方式A(如果您希望生成一个线性独立方程组),或者您需要找到一种A不需要分解秩亏矩阵的使用方法。

于 2013-04-06T16:25:38.013 回答