我可以使用逻辑索引来初始化具有可变长度的多维数组的单元数组

时间:2015-04-08 14:51:01

标签: matlab multidimensional-array indexing initialization cell-array

我有一个持久的单元格数组,在一个单元格中应该有一个三维数组,其中从lookUp数组中选取页数。 我希望单元格由逻辑数组索引,并希望多维数组中的页面数(第三维)由同一逻辑数组选取。 我试图避免使用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));

1 个答案:

答案 0 :(得分:0)

所以我解决了它,如果你想在这里是我的解决方案。创建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);