我可以用逻辑索引用可变长度的多维数组初始化元胞数组吗

Can I with logical indexing initilize a cell array with a multidimentinal arrays of variable length

我有一个持久单元格数组,在一个单元格中应该有一个三维数组,其中页数是从查找数组中选取的。 我希望单元格由逻辑数组索引,并且希望多维数组中的页数(第 3 维)由同一逻辑数组选取。 我试图避免使用 for 循环,因为元素的数量非常多。

有办法吗?由于最大页数是8页,我想放弃,只给所有数组分配8页。

%elements is a list of indexes
elements = 1:5;
%notInitialized is a logical stating that the cell of a element should be
notInitialized = logical(elements>2);
%initialized in the cell array cValuesSaved
lookUpOfNumberofPages = 4:8;

%persistent cValuesSaved
cValuesSaved = cell(numel(elements), 2); % two cells per elements

%I am not good at matlab, but my guess the code I want should look something like this:
cValuesSaved{notInitialized, 1} = nan(4, 2*3, lookUpOfNumberofPages(notInitialized));

所以我解决了它,如果你想要,这里是我的解决方案。不是创建 a1、a2、a3 的最佳方式,但我很着急。

谢谢看过的人!

array = nan(numel(elements), 3);
array(:,1) = 4;
array(:,2) = 2*3;
array(:,3) = lookUpOfNumberofPages;
a1 = array(:,1);
a2 = array(:,2);
a3 = array(:,3);

test2 = arrayfun(@nan, a1, a2, a3, 'UniformOutput', 0);
cValuesSaved(notInitialized,1) = test2(notInitialized);