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

时间:2015-02-05 09:20:16

标签: matlab numerical

我们假设我们有一个矩阵A = [1 0 0; 0 2 0; 0.00001 0.000002 0.00003]在Matlab中。 你知道如何在计算等级时忽略(考虑为0)其中的小值吗?我需要的是解决这些问题的一般方法!

2 个答案:

答案 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。