Select all entries in first N-1 dimensions of array
1 次查看(过去 30 天)
显示 更早的评论
hi, i have a loop in which cell array V keeps expanding:
for it=1:10;
V{it}= ..... % the number of dimension of V{it} is 'it'
% so if it=3: size(V{it})=[2 2 2];
end
later im going to loop through V again, but i want to select only the first N dimensions:
for id=1:9;
Y{id}= ... % select first 'id' dimensions of V{id+1}
%so if id=2, W{id}=V{id+1}(:,:,1), but if id=3, W{id}=V{id+1}(:,:,:,1)
end
I just dont know how to adjust the number of ':' i want to be there. Or equivalently to adjust the numer of times to put in 1:2, ie. W{4}=V{5}(1:2,1:2,1:2,1:2,1).
采纳的回答
Daniel Shub
2012-5-23
Have you thought about using linear indexing?
V{1} = rand([2,2,2]);
x = reshape(V{1}(1:4), repmat(2, 1, 2));
y = V{1}(1:2, 1:2);
isequal(x,y)
EDIT To give a full working example
Create some data:
for it=1:10;
V{it}= rand([repmat(2, 1, it), 1]);
end
Then get the data you want
for id=1:9;
Y{id} = reshape(V{id+1}(1:(2^(id))), [repmat(2, 1, id), 1]);
end
更多回答(0 个)
另请参阅
类别
在 Help Center 和 File Exchange 中查找有关 Matrices and Arrays 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!