Using cell array for indexing
Ältere Kommentare anzeigen
I have matrices of varying dimensionality I need to index.
So just writing A(i1,...,in) is not an option because n can vary in my application.
What is known to work for getting a single element out of A is using a cell array:
IndArray={i1,...,in}
Elem=A(IndArray{:})
However I'd like to do something like SubMatrix= A(i1,i2,...,im,:,:,...,:), where m<n. Is there a way to do that?
The following does not work:
IndArray={i1,...,im}
SubMatrix=A(IndArray{:})
Thanks in advance for any hints.
Akzeptierte Antwort
Weitere Antworten (2)
No need for a loop, here is the simple and efficient MATLAB approach:
IndArray = {i1,..,im};
IndArray(1+end:ndims(A)) = {':'};
SubMatrix = A(IndArray{:})
How it works: MATLAB always allows a scalar element on the RHS to be allocated to any number of elements on the LHS. This applies to any array class: numeric, cell (as above), char, string, struct, etc.
1 Kommentar
Lionel Pöffel
am 2 Aug. 2021
Lionel Pöffel
am 2 Aug. 2021
1 Kommentar
DGM
am 2 Aug. 2021
Sorry about that. I tried reading your other posts to try to figure out what exactly you were trying to do and had the feeling that I had misunderstood the intent.
Kategorien
Mehr zu Matrix Indexing finden Sie in Hilfe-Center und File Exchange
Produkte
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!