我们假设我们有一个矩阵A = [1 0 0; 0 2 0; 0.00001 0.000002 0.00003]在Matlab中。 你知道如何在计算等级时忽略(考虑为0)其中的小值吗?我需要的是解决这些问题的一般方法!
答案 0 :(得分:4)
那么......选择一个阈值并将低于此值的任何东西设置为0?
threshold = 0.0001;
A(A < threshold) = 0
或者取决于A
的其余部分,您可以完成:
floor(A) %// or round(A) or fix(A)...
答案 1 :(得分:1)
已经在此处列出的阈值处理是一种简单的解决方案,在某些情况下可以使用,并且在其他情况下会中断。对你来说可能没问题。
对于找到矩阵等级的特定问题,更正确的答案是使用奇异值分解。在您的示例中,它看起来像这样:
threshold = 0.001;
s = svd(A)
effectiveRank = sum(s/s(1) > threshold);
s
的条目从最大到最小排序。除以s(1)可以免除缩放A。