change Index of non-zero values in 3D array
1 Ansicht (letzte 30 Tage)
Ältere Kommentare anzeigen
lucksBi
am 11 Mär. 2017
Kommentiert: lucksBi
am 12 Mär. 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.
0 Kommentare
Akzeptierte Antwort
the cyclist
am 11 Mär. 2017
Bearbeitet: the cyclist
am 11 Mär. 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.
Weitere Antworten (0)
Siehe auch
Kategorien
Mehr zu Matrix Indexing finden Sie in Help Center und File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!