How to get values in an 8x8x4096 matrix?

1 visualización (últimos 30 días)
Ajay Ganti
Ajay Ganti el 1 de Mzo. de 2018
Editada: Andrei Bobrov el 1 de Mzo. de 2018
I have a matrix of size 8x8x4096. I need to get the values of positions (1,2),(2,2),(2,1) of each 8x8 block of all 4096 such blocks into a variable "x","y","z" respectively. Means all the values at locations (1,2) of 4096 blocks in variable x and (2,2) in y and (2,1) in z respectively.

Respuesta aceptada

Andrei Bobrov
Andrei Bobrov el 1 de Mzo. de 2018
Editada: Andrei Bobrov el 1 de Mzo. de 2018
Let M - your array [8x8x4096].
One variant:
[m,n,k] = size(M);
x = [1,2,2];
y = [2,2,1];
out = M(sub2ind([m,n],x(:),y(:)) + (0:k-1)*m*n)'; % MATLAB >= R2016b
% if MATLAB < R2016b then
out = M(bsxfun( @plus,sub2ind([m,n],x(:),y(:)),(0:k-1)*m*n))';
T_out = array2table(out,'v',{'x','y','z'});
  2 comentarios
Ajay Ganti
Ajay Ganti el 1 de Mzo. de 2018
thanks for the solution. It is working
Andrei Bobrov
Andrei Bobrov el 1 de Mzo. de 2018
Editada: Andrei Bobrov el 1 de Mzo. de 2018
Use out(:,1) or T_out.x or just see and use variant from Stephen's answer.

Iniciar sesión para comentar.

Más respuestas (0)

Categorías

Más información sobre Resizing and Reshaping Matrices en Help Center y File Exchange.

Productos

Community Treasure Hunt

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

Start Hunting!

Translated by