Logical indexing 3D array to get a 2D slice

3 ビュー (過去 30 日間)
Yi-xiao Liu
Yi-xiao Liu 2021 年 3 月 12 日
回答済み: Walter Roberson 2021 年 3 月 12 日
I have a piece of code that calculates potential for 3D space. Now I want to extract the potential at the YOZ plane:
V= some calculations;
The problem is that V0 is a 1D vector instead of a 2D matrix. How do I correctly extract the slice?


Walter Roberson
Walter Roberson 2021 年 3 月 12 日
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 件)


Find more on Matrices and Arrays in Help Center and File Exchange




Community Treasure Hunt

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

Start Hunting!

Translated by