Indexing into a multidemesional array using a multidimensional array
古いコメントを表示
This question seems similar to a previously answered question, but I'm not sure if the answer there applies to my problem.
I have an array, X, which has dimensions k by m by n and I have another array, Y, with indices for the first dimension k, which has dimensions m by n. I want to create an output matrix of m by n of each value of X in the k dimension where the index in that k dimension corresponds to the value in Y for each value of m and n.
I know that is a bit confusing, but in essence I want to achieve the following code via clever application of indexing, rather than using nested for loops.
m = size(X,2);
n = size(X,3);
for m_count = 1:length(m)
for n_count = 1:length(n)
output(m_count,n_count) = X(Y(m_count,n_count),m_count,n_count)
end
end
採用された回答
その他の回答 (1 件)
Try this:
output = X(sub2ind(size(X), Y(:), 1:size(x,2), 1:size(x,3))
1 件のコメント
Kevin McAughey
2016 年 11 月 18 日
カテゴリ
ヘルプ センター および File Exchange で Matrix Indexing についてさらに検索
製品
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!