change Index of non-zero values in 3D array

1 visualización (últimos 30 días)
lucksBi
lucksBi el 11 de Mzo. de 2017
Comentada: lucksBi el 12 de Mzo. de 2017
HI.. I have a 3D array like this:
val(:,:,1) =
0 0 0 0 0
0 0 0 0 0
0 0 0 0 0
0 22 0 0 1
0 0 0 0 0
33 0 -1 0 0
0 0 0 -1 0
0 0 0 0 0
0 0 0 0 0
0 0 0 0 0
The problem is that i want all values to be in same row. e.g. in val(:,:,1) it should be 33,22,-1,-1,1 in 6th row of matrix. Is there any way to do this? I am new to matlab so sorry if my question sounds awkward.

Respuesta aceptada

the cyclist
the cyclist el 11 de Mzo. de 2017
Editada: the cyclist el 11 de Mzo. de 2017
Here is one way.
val(:,:,1) = [
0 0 0 0 0
0 0 0 0 0
0 0 0 0 0
0 22 0 0 1
0 0 0 0 0
33 0 -1 0 0
0 0 0 -1 0
0 0 0 0 0
0 0 0 0 0
0 0 0 0 0];
val(:,:,2) = [
0 0 0 0 0
14 0 0 0 0
0 0 4 0 0
0 0 0 0 1
0 0 0 0 0
0 0 0 0 0
0 0 0 0 0
0 16 0 0 0
0 0 0 2 0
0 0 0 0 0];
newval = zeros(size(val));
newval(6,:,:) = reshape(val(val~=0),size(val(1,:,:)));
I made up some 3D data based on your first "slice". Then, I create a newval matrix that is the same size (but all zeros), and fill in the 6th row with the non-zero values from val.

Más respuestas (0)

Categorías

Más información sobre Matrix Indexing en Help Center y File Exchange.

Etiquetas

Community Treasure Hunt

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

Start Hunting!

Translated by