change Index of non-zero values in 3D array
조회 수: 1 (최근 30일)
이전 댓글 표시
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
채택된 답변
the cyclist
2017년 3월 11일
편집: the cyclist
2017년 3월 11일
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.
추가 답변 (0개)
참고 항목
카테고리
Help Center 및 File Exchange에서 Matrix Indexing에 대해 자세히 알아보기
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!