【问题标题】:How I can delete rows of matrix that contain only values near 0?如何删除仅包含接近 0 的值的矩阵行?
【发布时间】:2020-05-17 12:14:36
【问题描述】:

我需要删除附近只有零或值的行,比如 0 +/- 1e-20。 例如:

A=[  7      8
   1e-18    4
     0      0
   1e-19    0]

在这种情况下,结果应该是:

A=[7      8
  1e-18   4]

我找到了以下代码,但这仅适用于完全为零的情况。

A = A(any(A,2),:)

【问题讨论】:

    标签: matlab matrix


    【解决方案1】:

    首先将所有那些“技术上为零”的值归零。

    A(A<1e-10)=0; % or any other threshold, depends on your application. 
    

    【讨论】:

    • 矩阵可能包含负值。这些也归零。所以我尝试了这个但它不起作用:R(R&lt;1e-10 &amp;&amp; R&gt;1e-10)=0我怎样才能写对?
    • @HansLustiga 阅读您的代码:R&lt;1e-10 &amp;&amp; R&gt;1e-10。您正在选择严格小于1e-10 但同时(AND、&&)它们也必须严格大于1e-10 的所有 R 值。没有任何值同时小于和大于常量同时。它在数学上是不可能的。只需检查它们是否大于零............
    • 我忘记了减号,应该叫:R(R&lt;1e-10 &amp;&amp; R&gt;-1e-10)=0 如果我不检查第二种情况,例如-3 也会变为零。
    • 啊,我明白了。您没有阅读错误消息,也没有在谷歌上搜索它的含义。不错的建议这样做。 R(R&lt;1e-10 &amp; R&gt;-1e-10)=0
    • 是的,你是对的。现在我做了研究link谢谢你的帮助。
    猜你喜欢
    • 1970-01-01
    • 2021-09-01
    • 2023-03-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-09-23
    • 2014-10-01
    • 1970-01-01
    相关资源
    最近更新 更多