Converting each cell of an array to one block diagonal matrix

7 次查看(过去 30 天)
I have a cell array where each cell contains different size of square adjacency matrix for example
A = 29x29 double
30x30 double
24x24 double
10x10 double
Now I want to create One Block diagonal matrix B from each cell of A such that each cell Of A is in the diagonal in B. Example
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]
so B would NxN where N = 29+30+24+10
I tried with the following code but it did not work.
function B =blockD(A)
n=size(A,1);
for i = 1:n
B=blkdiag(A{i});
end
end
Also at the end I have to row normalised matrix B

采纳的回答

Matt J
Matt J 2018-9-9
B=blkdiag(A{:});

更多回答(1 个)

Ilias Misailidis
Ilias Misailidis 2020-6-11
Hi my name is Ilias and i am new entry to Matlab. I am trying to make a block matrix 9x9 like foto for my homework to university and nothing happened with code.
Someone to help me :-)

类别

Help CenterFile Exchange 中查找有关 Operating on Diagonal Matrices 的更多信息

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by