Assign multidimensional array 'slice' or 'chunk'
조회 수: 6 (최근 30일)
이전 댓글 표시
What’s the best way to assign
A(:, :, x1, x2, …, xn)
to a given array, where
x = [x1, x2, …, xn]
is a vector whose length is arbitrary (but matches the relevant dimensions of A)?
댓글 수: 0
답변 (1개)
Guillaume
2017년 9월 4일
x = [4, 7, 8]
A = reshape(1:5*6*7*8*9, [5, 6, 7, 8, 9]);
%indexing wanted: A(:, :, x1, x2, x3)
[idx1, idx2] = ndgrid(1:size(A, 1), 1:size(A, 2)); %generate all valid indices for the 1st two colons, put all colons into the ndgrid call
idxx = arrayfun(@(v) repmat(v, size(idx1), 1), x, 'UniformOutput', false); %repmat each x value into shape of colon index matrices and transform into cell array
result = A(sub2ind(size(A), idx1, idx2, idxx{:}))
isequal(result, A(:, :, 4, 7, 8))
댓글 수: 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!