Как создать массив ячеек из k похожих объектов в Matlab? - PullRequest
8 голосов
/ 30 мая 2010

Я хочу создать 1, k ячейку из m, m матриц. У меня возникли проблемы при попытке инициализировать его. Моей первой идеей было сделать это

myCell = cell{1,K};
for k = 1:K
  myCell{1,k} = eye(m);
end 

Но, похоже, такой уродливый способ его инициализации. Должен ли быть лучший способ?

Ответы [ 4 ]

5 голосов
/ 30 мая 2010

Решение с еще меньшим количеством вызовов функций:

[myCell{1:k}] = deal(eye(m));
3 голосов
/ 30 мая 2010

Вот очень простое решение REPMAT :

myCell = repmat({eye(m)},1,K);

Это просто создает одну ячейку с eye(m) в ней, а затем реплицирует эту ячейку K раз.

2 голосов
/ 30 мая 2010

Рассмотрим это:

myCell = arrayfun(@(x)eye(m), 1:k, 'UniformOutput',false)
2 голосов
/ 30 мая 2010

Попробуйте это:

myCell =  mat2cell(repmat(eye(m),[1 k]),[m],repmat(m,1,k))
...