Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/matlab/15.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_Cell Array_Adjacency Matrix_Blockdiag - Fatal编程技术网

在MATLAB中将阵列的每个单元转换为一个块对角矩阵

在MATLAB中将阵列的每个单元转换为一个块对角矩阵,matlab,cell-array,adjacency-matrix,blockdiag,Matlab,Cell Array,Adjacency Matrix,Blockdiag,例如,我有一个单元数组,其中每个单元包含不同大小的正方形邻接矩阵(在MATLAB中) A = 29x29 double 30x30 double 24x24 double 10x10 double 现在我想从A的每个单元创建一个块对角矩阵B,这样A的每个单元都在B的对角线中 B = [29X29] 0 0 0 0 0 0 0 0 0 0 0 0 [30x30] 0 0 0 0 0 0 0 0 0 0 0

例如,我有一个单元数组,其中每个单元包含不同大小的正方形邻接矩阵(在MATLAB中)

A = 29x29 double
      30x30 double 
      24x24 double 
      10x10 double
现在我想从A的每个单元创建一个块对角矩阵B,这样A的每个单元都在B的对角线中

 B = [29X29] 0 0 0 0 0 0 0 0  0 0
        0   0 [30x30] 0 0 0 0 0 0 0 
        0   0  0   0  [24X24] 0 0 0
        0   0  0   0   0   0 [10x10]
所以B是NxN,其中N=29+30+24+10

我尝试了以下代码,但没有成功

 function B =blockD(A)
n=size(A,1);
for i = 1:n
    B=blkdiag(A{i});
end
end
同样,在最后,我必须对归一化矩阵B进行行处理,只要使用B=blkdiag(A{:})


看起来像matlab.yeah matlab@user202729所以你想让每个邻接矩阵的每个元素都在B的主对角线上?
octave:4> A(1) = [1,2; 3, 4]
A = {3x1x3 Cell Array}
octave:5> A(2) = [1,2; 6, 4]
A = {3x1x3 Cell Array}
octave:6> A(3)  = [1, 7; 5 8]
A = {3x1x3 Cell Array}
octave:7> B = blkdiag(A{:})
B =

   1   2   0   0   0   0
   3   4   0   0   0   0
   0   0   1   2   0   0
   0   0   6   4   0   0
   0   0   0   0   1   7
   0   0   0   0   5   8