Logical indexing 3D array to get a 2D slice
    3 visualizaciones (últimos 30 días)
  
       Mostrar comentarios más antiguos
    
    Yi-xiao Liu
 el 12 de Mzo. de 2021
  
    
    
    
    
    Respondida: Walter Roberson
      
      
 el 12 de Mzo. de 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 comentarios
Respuesta aceptada
  Walter Roberson
      
      
 el 12 de Mzo. de 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 comentarios
Más respuestas (0)
Ver también
Categorías
				Más información sobre Matrix Indexing en Help Center y File Exchange.
			
	Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!

