Logical indexing 3D array to get a 2D slice

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?

 Akzeptierte Antwort

Walter Roberson
Walter Roberson am 12 Mär. 2021

0 Stimmen

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()

Weitere Antworten (0)

Kategorien

Produkte

Version

R2019b

Community Treasure Hunt

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

Start Hunting!

Translated by