how to extract elements along specified dimension of array
52 次查看(过去 30 天)
显示 更早的评论
when e.g. selecting all elements in the 2nd dimension and the first element of all remaining dimensions of an array, for a 3-dimensional array one would write: A(1,:,1)
how to program this elegantly when the dimension over which I want the elements (2 in the example) is a variable itself, whose value is unknown until runtime ?
thanks!!
0 个评论
采纳的回答
Jonathan Sullivan
2012-3-16
A = rand(100,100,10,10);
dim = 4;
sz = size(A);
inds = repmat({1},1,ndims(A));
inds{dim} = 1:sz(dim);
A(inds{:})
更多回答(2 个)
per isakson
2012-3-15
A(ixi,ixj,ixk)
where ixi,ixj,and ixk are numerical vectors (/scalar) of integers. ":" would correspond to (1:number_of_element_in_dimension). Or with logical indexing
A(isi,isj,isk)
where isi,isj,isk are logical vectors all with the length "number_of_element_in_dimension". ":" would be true(1,number_of_element_in_dimension).
The elegance will be in the calculation of ixi,ixj,and ixk or isi,isj,isk.
0 个评论
Walter Roberson
2012-3-15
Something like this,
DIM = 2; %changed at runtime
idxexpr = { repmat({1}, 1, DIM - 1), {':'}, repmat({1}, 1, ndim(A)-DIM) };
A(idxexpr{:})
3 个评论
Walter Roberson
2012-3-15
I have done it successfully before, my post is either on the newsgroup or somewhere in Answers. _Finding_ the post would take longer than reinventing it!
Try
idxexpr = [num2mat(ones(1,DIM-1)), {':'}, num2mat(ones(1,ndim(A)-DIM))];
另请参阅
类别
在 Help Center 和 File Exchange 中查找有关 Matrix Indexing 的更多信息
产品
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!