在Matlab中识别块对角矩阵?

时间:2015-08-10 04:45:35

标签: matlab matrix

我需要检查矩阵是否是对角块矩阵。有没有简单的方法来检查它?特别是,如果存在isdiag()这样的简单函数,那将是完美的。

1 个答案:

答案 0 :(得分:0)

R2014a及更高版本实际上存在函数 isdiag 。它适用于方形和非方形矩阵。对于早期版本的Matlab,请参阅下面的替代方案。

以下是快速演示:

A = [1 0 0;
     0 2 0;
     0 0 3];
isdiag(A)

B = [1 0 0;
     0 2 3;
     0 0 4];
isdiag(B)

C = [1 0 0 0;
     0 2 0 0;
     0 0 3 0];
isdiag(C)

D = [1 0 0 0;
     0 2 0 3;
     0 0 4 0];
isdiag(D)

...我们得到:

ans =
     1
ans =
     0
ans =
     1
ans =
     0

在R2014a及更高版本中,您也可以使用 isbanded ,其带宽为0。这将给出完全相同的结果:

isbanded(M,0,0)

对于R2014a 之前的版本,您可以使用findall的组合:

[t1,t2] = find(M);
res = all(t1==t2)