How to take elements from a multidimensional array along the page axis?
Mostrar comentarios más antiguos
Hello,
I want to map a 3d array to a 2d array by taking a single value along the page axis at each coordinate.
For example, in python I would do the following:
% x = np.linspace(0, 1, 50)
% X, Y = np.meshgrid(x, x)
% Z = np.exp(-X**2/2) + np.exp(-Y**2/2)
% A = np.arange(10)[:,np.newaxis,np.newaxis] * Z
%
% I, J = np.mgrid[0:50, 0:50]
% choice_idx = np.randint(10, size=(50, 50))
% choice_arr = A[choice_idx,I,J]
However, applying this naivly to matlab gives me "Requested array exceeds the maximum possible variable size.":
x = linspace(0, 1, 50);
[X, Y] = meshgrid(x, x);
Z = exp(-X.^2/2) + exp(-Y.^2/2);
A = reshape(0:9, 1, 1, []) .* Z;
[I, J] = meshgrid(1:50, 1:50);
choice_idx = randi(10, 50, 50);
choice_arr = A(I,J,choice_idx)
How can I achieve this in matlab? Apologies, if this question was asked before.
Respuesta aceptada
Más respuestas (0)
Categorías
Más información sobre Creating and Concatenating Matrices en Centro de ayuda y File Exchange.
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!