blkdiag использует varargin для построения диагональной матрицы блоков из входных аргументов (каждая матрица, которую необходимо вставить в диагональ).
blkdiag
varargin
out = blkdiag(a,b,c,d,...), где a, b, c, d, ... - матрицы, выводит блочную диагональную матрицу в виде
out = blkdiag(a,b,c,d,...)
a, b, c, d, ...
Предположим, у меня есть матричный массив ячеек (или некоторая другая структура данных);как бы я передать это функции, как blkdiag?
Используйте {:}, чтобы развернуть его для функции:
blocks = cell(2); blocks{1} = rand(2); blocks{2} = rand(2); out = blkdiag(blocks{:})
Ответ:
out = 0.6787 0.7431 0 0 0.7577 0.3922 0 0 0 0 0.6555 0.7060 0 0 0.1712 0.0318