如何忽略matlab中矩阵计算中相对较小的值

how to ignore relatively small values in matrices calculations in matlab

假设我们有一个矩阵 A=[1 0 0; 0 2 0; 0.00001 0.000002 0.00003] 在 Matlab 中。 例如,您知道如何在计算排名时忽略(视为 0)其中的小值吗?我需要的是此类问题的通用解决方案!

所以...选择一个阈值并将低于该阈值的值设置为 0?

threshold = 0.0001;
A(A < threshold) = 0

否则,根据 A 的其余部分,您可以四舍五入:

floor(A) %// or round(A) or fix(A)...

已在此处列出的阈值处理是一个简单的解决方案,它在某些情况下有效,但在其他情况下会失效。可能适合你。

对于求矩阵秩的特定问题,更正确的答案是使用奇异值分解。在您的示例中,它看起来像这样:

threshold = 0.001;
s = svd(A)
effectiveRank = sum(s/s(1) > threshold);

s的条目从大到小排序。除以 s(1) 使您不受缩放 A 的影响。