How do I index an array with varying dimension?
5 vues (au cours des 30 derniers jours)
Afficher commentaires plus anciens
runtime_error
le 9 Fév 2024
Commenté : Stephen23
le 9 Fév 2024
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?
1 commentaire
Réponse acceptée
Walter Roberson
le 9 Fév 2024
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)
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)
Alternately....
indx = repmat({':'}, 1, ndims(A));
indx{1} = 2;
D = A(indx{:});
size(D)
0 commentaires
Plus de réponses (0)
Voir également
Catégories
En savoir plus sur Matrix Indexing dans Help Center et File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!