Logical indexing 3D array to get a 2D slice
2 vues (au cours des 30 derniers jours)
Afficher commentaires plus anciens
Yi-xiao Liu
le 12 Mar 2021
Réponse apportée : Walter Roberson
le 12 Mar 2021
I have a piece of code that calculates potential for 3D space. Now I want to extract the potential at the YOZ plane:
[X,Y,Z]=meshgrid(-500:spacing:500);
V= some calculations;
V0=V(X==0);
The problem is that V0 is a 1D vector instead of a 2D matrix. How do I correctly extract the slice?
0 commentaires
Réponse acceptée
Walter Roberson
le 12 Mar 2021
You cannot. When you use a single parameter logical vector to index an array, the result is always a vector.
In limited circumstances you can reshape() the vector.
I suggest something more like
marginals = -500:spacing:500;
[X,Y,Z] = meshgrid(marginals);
V= some calculations;
xtarget = 0;
[~, xidx] = min(abs(marginals - xtarget));
V0 = permute(V(xidx, :, :), [2 3 1]); %safer than squeeze()
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!