Azzera filtri
Azzera filtri

How to get values in an 8x8x4096 matrix?

5 visualizzazioni (ultimi 30 giorni)
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.

Risposta accettata

Andrei Bobrov
Andrei Bobrov il 1 Mar 2018
Modificato: Andrei Bobrov il 1 Mar 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 Commenti
Ajay Ganti
Ajay Ganti il 1 Mar 2018
thanks for the solution. It is working
Andrei Bobrov
Andrei Bobrov il 1 Mar 2018
Modificato: Andrei Bobrov il 1 Mar 2018
Use out(:,1) or T_out.x or just see and use variant from Stephen's answer.

Accedi per commentare.

Più risposte (0)

Categorie

Scopri di più su Multidimensional Arrays in Help Center e File Exchange

Prodotti

Community Treasure Hunt

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

Start Hunting!

Translated by