How can I access the elements of one array with another array?
10 visualizaciones (últimos 30 días)
Mostrar comentarios más antiguos
Ryan Potter
el 11 de Dic. de 2018
I'd like to assign elements to an array in the following manner:
a = zeros(2,2,2);
ix=1;
iy=1;
b = [1,1];
a([ix,iy],:) = b(:)
Where ix and iy represent the position in the 1st and 2nd directions, a in it's 3rd dimension and b are the same length length. For my application ix and iy really need to be in the same array and the method needs to be applicable to N-dimensions. Is there a way to do such an assignment?
0 comentarios
Respuesta aceptada
Más respuestas (2)
Guillaume
el 11 de Dic. de 2018
I'm going to assume that [ix, iy] is a 2D array, not a vector as in your example, otherwise your problem is trivially solved with:
indices = [ix, iy];
a(indices(1), indices(2), :) = b(:);
If it's a vector, you will have to convert your Nd subscripts into linear indices with sub2ind. Unfortunately, that means you can't use the colon operator. You have to explicitly list the dimensions.
a = zeros(2, 2, 2);
indices = [1 1;1 2;2 1];
b = [1 2; 3 4; 5 6] %shape of b doesn't matter
linindices = sub2ind(size(a), repmat(indices(:, 1), 1, size(a, 3)), repmat(indices(:, 2), 1, size(a, 3)), repmat(1:size(a, 3), size(indices, 1), 1))
a(linindices) = b
2 comentarios
Ver también
Categorías
Más información sobre Resizing and Reshaping Matrices 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!