# function-style array indexing

조회 수: 1 (최근 30일)
Ben Mitch . 2013년 3월 13일
편집: per isakson . 2016년 8월 5일
Hi
This problem keeps coming up for me over the years, and there must be a standard solution, so perhaps someone knows it, I can't ever google it up.
Say I have an array A of any number of dimensions, and I want to apply an indexing operation to the last dimension. Now, if it's 2D, I just use:
B = A(:, ii);
If it's 3D, I use:
B = A(:, :, ii);
but what if it's n-D? Afaik there is no syntax in the language for this, so I'd have to use some function. A function "index_into()", for instance, to give:
B = index_into(A, n, ii);
At the moment, I always end up doing some horrible mash like:
X = permute(A, [ndims(A) ...]);
X = X(ii, :);
X = reshape(X, ...);
B = permute(X, ...);
Surely there must be a better way...? Any suggestions?
Cheers

댓글을 달려면 로그인하십시오.

### 채택된 답변

Walter Roberson 2013년 3월 13일
idxcell = repmat({':'}, 1, ndims(A));
idxcell{n} = ii;
A(idxcell{:})
##### 댓글 수: 2표시 이전 댓글 수: 1숨기기 이전 댓글 수: 1
Ben Mitch 2013년 3월 13일
Nice, thanks. I think I had seen that index-by-comma-separated-list before, but it hadn't taken root in my mind. Wonder, though, if a syntax would be possible that made this a bit more intuitive. Just curious...
A(..., ii)?

댓글을 달려면 로그인하십시오.

### 카테고리

Help CenterFile Exchange에서 Matrix Indexing에 대해 자세히 알아보기

### Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by