Как создать ячейку-массив в MATLAB и инициализировать все элементы в один и тот же объект?
у меня есть матрица (назовем его X
), который инициализируется сказать zero(3)
.
Я хочу изменить код так, чтобы X
- это массив ячеек размера (скажем) (3,1)
и инициализировать каждый элемент zero(3)
.
Я могу сделать это с помощью цикла, но есть ли лучший способ?
X = cell(3,1);
for ii=1:numel(X)
X{ii} = zeros(3);
end
3 ответов
Вы можете сделать это с помощью deal()
.
>> [X{1:3, 1}] = deal(zeros(3))
X =
[3x3 double]
[3x3 double]
[3x3 double]
и еще один способ:
X = {zeros(3)};
X(1:3,1) = X;
это решение использует тот факт, что вы можете назначить индексам, которые лежат за пределами размера переменных. Matlab будет автоматически расширяться в этом случае.
так же:
clear X;
X(1:3,1) = {zeros(3)};