Я хочу создать 1, k ячейка m, m матрицы. Я испытываю некоторые затруднения при попытке инициализировать его. Моя первая идея состояла в том, чтобы сделать это
myCell = cell{1,K};
for k = 1:K
myCell{1,k} = eye(m);
end
Но это походит на такой ужасный способ инициализировать его. Должен быть лучший путь?
Решение с еще меньшим количеством вызовов функций:
[myCell{1:k}] = deal(eye(m));
Рассмотрим этот вариант:
myCell = arrayfun(@(x)eye(m), 1:k, 'UniformOutput',false)
Вот очень простое решение REPMAT:
myCell = repmat({eye(m)},1,K);
Это просто создает одну ячейку с eye(m)
в ней, затем реплицирует эту ячейку K
раз.
Попробуйте так:
myCell = mat2cell(repmat(eye(m),[1 k]),[m],repmat(m,1,k))