フィルターのクリア

How do I index an array with varying dimension?

5 ビュー (過去 30 日間)
runtime_error
runtime_error 2024 年 2 月 9 日
コメント済み: Stephen23 2024 年 2 月 9 日
I have a function Y = func(X)
X can be any dimension >=2. Inside the function, I need to index X by the first dimension. X(index, :) or X(index, :, :) depending on the dimension. I know I can check the dimension like this:
if ndims(X) == 2
X(index, :) = ....
elseif ndims(x) == 3
X(index, :, :) = ..
end
Is there a more efficient way?

採用された回答

Walter Roberson
Walter Roberson 2024 年 2 月 9 日
If you use a trailing dimension of : to index, then the result has the proper size but with the dimension "unwrapped"
A = ones(3,4,5);
B = A(2,:);
size(B)
ans = 1×2
1 20
You can leave it like that for computations, or you can reshape() it
sz = size(A);
sz(1) = 1;
C = reshape(B,sz);
size(C)
ans = 1×3
1 4 5
Alternately....
indx = repmat({':'}, 1, ndims(A));
indx{1} = 2;
D = A(indx{:});
size(D)
ans = 1×3
1 4 5

その他の回答 (0 件)

カテゴリ

Help Center および File ExchangeMatrix Indexing についてさらに検索

タグ

Community Treasure Hunt

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

Start Hunting!

Translated by