Replace Values that Meet a Condition - 3D Matrix
조회 수: 21 (최근 30일)
이전 댓글 표시
Hi, i have two 3D-Matrices each with a dimension of 3. I work with images and i want to use the rgb-code to create conditions for my needs. The color red got the values of 1 0 0. I want to replace the values of Matrix Z with the values of Matrix X, if Matrix X got the value 1 in dimension 1, the value 0 in dimension 2 and the value 0 in dimension 3. So 1 0 0 for red.
My code for 3D-Matrices X and Z:
Z ( X(:,:,1) == 1 & X(:,:,2) == 0 & X(:,:,3) == 0) = X ( X(:,:,1) == 1 & X(:,:,2) == 0 & X(:,:,3) == 0);
The result is not satisfying. The code changes the values in Z(:,:,1) as i want them to do, but dimension 2 and 3 are left unchanged... I hope someone can solve my problem. I guess i got the wrong syntax...
Thanks in advance Flo
댓글 수: 0
채택된 답변
Guillaume
2018년 6월 28일
mask = X(:, :, 1) == 1 & X(:, :, 2) == 0 & X(:, :, 3) == 0; %fully saturated pure red
mask = repmat(mask, 1, 1, 3); %replicate mask across all 3 colour channels
Z(mask) = X(mask);
댓글 수: 4
Stephen23
2018년 6월 28일
"But it would be great to know why my code isn't working."
Because you used a 2D logical index with a 3D array. Unfortunately there is no simple way to use a 2D mask as you want to, without splitting the array or duplicating the mask. Read this for a short discussion on this topic:
추가 답변 (0개)
참고 항목
카테고리
Help Center 및 File Exchange에서 Numeric Types에 대해 자세히 알아보기
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!