【问题标题】:Check if a matrix is an identity matrix in Matlab检查矩阵是否是Matlab中的单位矩阵
【发布时间】:2016-02-28 12:39:52
【问题描述】:

我需要检查一个矩阵是否是一个单位矩阵。我知道有一个函数可以检查矩阵是否是对角矩阵,即isdiag。我知道我可以执行以下操作来检查矩阵 a 是否为单位矩阵:

isequal(a, eye(size(a, 1)))

有没有像isdiag 这样的函数直接为我做的?

【问题讨论】:

  • 您通常应该避免检查准确性,除非您使用的是整数。你可能应该做类似isidentity=@(a,tol) all(abs(a-eye(size(a)))<tol) 的事情。或max(max()) 而不是all(max()<)
  • 没有内置函数。除非您处理 eye(size(a, 1)) 可能超出内存的非常大(稀疏)矩阵,否则您的方法很好。
  • 嗨@nbro,您的多个问题仍未得到接受的答案。当答案解决了您的问题时,请单击复选标记考虑accepting it。这向更广泛的社区表明您找到了解决方案。
  • @Daniel 是的,你是对的,但有时他们不满足我,或者我忘了接受,哈哈 :) 我会在接下来的几天里尝试看看那些并接受那些我认为应该被接受;)
  • 期望别人花时间回答你的问题,如果你的问题得到回答,你也应该花时间给出一些最低限度的反馈。

标签: matlab matrix linear-algebra


【解决方案1】:

正如其他人所说,您不一定要检查与单位矩阵是否完全相等。对于足够大的矩阵,使用eye 也可能会占用不必要的内存量。我建议使用diag 来解决这个问题。

isdiag(a) && all(abs(diag(a) - 1) < tolerance)

【讨论】:

  • 请注意,isdiag 可能会检查精确的对角线,因此它可能与您的条件的后半部分不完全一致。
【解决方案2】:
sum(sum(A - eye(size(A,1)) < epsilon)) == 0

除以恒等式并检查是否有任何元素大于 epsilon。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-04-11
    • 2017-10-08
    • 2012-10-11
    • 2019-03-09
    • 2015-02-09
    • 2018-01-11
    • 1970-01-01
    • 2013-05-17
    相关资源
    最近更新 更多