我需要检查矩阵是否是对角块矩阵。有没有简单的方法来检查它?特别是,如果存在isdiag()
这样的简单函数,那将是完美的。
答案 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 之前的版本,您可以使用find
和all
的组合:
[t1,t2] = find(M);
res = all(t1==t2)