MATLAB의 3D 배열에 1 차원 슬라이스를 어떻게 할당합니까?Matlab 3D 배열의 1D 슬라이스 할당
필자가 설정하고자하는 3 차원 이미지 행렬 (RGB 형식)의 픽셀에 해당하는 'CD'라는 논리적 인 2 차원 배열이 있습니다.
CD = any(d, 3);
CDM(CD) = 255;
그래서이 경우, 'CDM'은 (예를 들어, 그것은 771x457x3 행렬의) 화소마다 R, G, B 값을 포함하는 3 차원 행렬이다.
위 코드가 작동합니다. 그것은 내가 원하는 빨강 픽셀의 이미지를 생성합니다.
하지만 녹색 또는 청록색 픽셀을 생성하고 싶다고 가정 해 보겠습니다. 'CDM'의 두 번째 및 세 번째 '레이어'(녹색 및 파란색 값)에 어떻게 액세스합니까? 나는
CDM(CD) = [0 255 255];
을 할당하려하지만, 당신은 (2 차원 배열)를 각 채널을 잡기 위해 필요하고 사용하는 같은 2 차원 배열로 각 채널을 수정하려면 오류
In an assignment A(:) = B, the number of elements in A and B must be the same.
세 가지 솔루션! 정말 좋은 답변입니다, 감사합니다. –
R2016의 다른 점은 무엇입니까? "bsxfun'을 제거 할 수 있습니까? – Floris
2016은 배열 연산 (?)을위한 싱글 톤 차원의 자동 확장을 수행합니다. 이것은 'bsxfun'의 기능입니다. – stephematician