Итерировать матрицу в массив ячеек

Есть ли способ написать цикл for, который добавит заданное количество матриц в массив ячеек.

`C1 = [];`

Поэтому вместо того, чтобы выписывать всех, например:

`cell = {}
cell = [cell C1];
cell = [cell C2];
cell = [cell C3];
cell = [cell C4];`

Где число C известно.


person user3575908    schedule 05.06.2014    source источник


Ответы (1)


Если количество матриц C известно, то да, вы можете написать цикл for для этого. На каждой итерации цикла может быть создана и затем оценена командная строка:

N = 4;
cellArray = cell(N,1);  % pre-allocate memory for the array
for i=1:N

    % build the command string
    cmd = ['cellArray{i} = C' num2str(i) ';'];

    % evaluate the string
    eval(cmd);

end

Вы можете просмотреть код и посмотреть, как выглядит cmd на каждой итерации. Обратите внимание, что у некоторых разработчиков есть опасения по поводу использования команды eval. Поскольку вы строите команду, которая будет запускаться на каждой итерации, это может несколько затруднить отладку (в случае возникновения ошибки).

person Geoff    schedule 05.06.2014
comment
Спасибо, это, кажется, сделало то, что я хотел. - person user3575908; 05.06.2014