Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/matlab/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在Matlab中识别块对角矩阵?_Matlab_Matrix - Fatal编程技术网

在Matlab中识别块对角矩阵?

在Matlab中识别块对角矩阵?,matlab,matrix,Matlab,Matrix,我需要检查矩阵是否是对角块矩阵。有什么简单的方法检查吗?特别是,如果存在一个简单的函数,如isdiag(),这将是完美的 R2014a及更高版本实际上存在一个函数。它适用于平方和非平方矩阵。有关Matlab的早期版本,请参见下面的备选方案 下面是一个快速演示: 。。。我们得到: 在R2014a及更高版本中,您也可以使用,其上下带宽分别为0。这将为您提供完全相同的结果: isbanded(M,0,0) 对于R2014a之前的版本,您可以结合使用find和all: [t1,t2] = find

我需要检查矩阵是否是对角块矩阵。有什么简单的方法检查吗?特别是,如果存在一个简单的函数,如
isdiag()
,这将是完美的

R2014a及更高版本实际上存在一个函数。它适用于平方和非平方矩阵。有关Matlab的早期版本,请参见下面的备选方案

下面是一个快速演示:

。。。我们得到:


在R2014a及更高版本中,您也可以使用,其上下带宽分别为
0
。这将为您提供完全相同的结果:

isbanded(M,0,0)

对于R2014a之前的版本,您可以结合使用
find
all

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

块的大小是一样的吗?@Ram:请解释一下什么是对角块矩阵。这些积木有多大尺寸。它们可以包含零吗?它们可以相同也可以不同,这取决于结果。“我需要能处理这两种情况的东西。”丹尼尔在我的研究中,块矩阵不必大小相同。是的,它们可以包含零@Ram:很简单的回答,每个矩阵都是对角块矩阵,因为它有一个块填充整个矩阵。这个方块放在对角线上。@HamtaroWarrior:谢谢你的评论。。。我为R2014a和更早版本添加了一个解决方案。isdiag可以很好地识别对角矩阵。然而,在块对角矩阵的情况下,它可能会失败。例如,矩阵D的isdiag结果为0,尽管它是块对角矩阵。@Ram根据,
D
不是块对角矩阵。如果您有其他定义,请将其添加到问题中,我将相应地编辑我的答案。对不起,我指的是矩阵B。第一个块是1(1x1矩阵),第二个块是2,3,0,4(2x2矩阵)。矩阵B的其余元素为零。@Daniel-你是对的,我没有注意到每个A_n本身就是一个方阵。只是在修辞上,当基本上每个矩阵都满足这个标准时,为什么还要检查它是否是对角块矩阵呢?编辑:我刚看到聊天日志,我同意,这就是我的意思。整个矩阵可以看作是单个块。
isbanded(M,0,0)
[t1,t2] = find(M);
res = all(t1==t2)