#matlab
#matlab
Вопрос:
blkdiag
используется varargin
для построения блочной диагональной матрицы из входных аргументов (каждая матрица, которую необходимо вставить в диагональ).
out = blkdiag(a,b,c,d,...)
, гдеa, b, c, d, ...
матрицы, выводит блочную диагональную матрицу вида
Предположим, у меня есть массив ячеек матриц (или какая-либо другая структура данных); как бы я передал это функции, подобной blkdiag
?
Комментарии:
1. Черт. Только что понял ответ. Ну что ж…
2. @Phonon: это вообще не очень хорошая форма 🙂
3. Однако это дает хорошую информацию людям, ищущим помощь в SO.
4. @Jacob: Я не согласен. Я думаю, что вполне нормально опубликовать хороший ответ на ваш собственный вопрос.
5. @Jonas: Да, определенно, но я лично предпочитаю это делать, если мой ответ лучше / остается без ответа.
Ответ №1:
Используйте {:}, чтобы расширить его для функции:
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