:
>> A = tril(ones(6))
A =
1 0 0 0 0 0
1 1 0 0 0 0
1 1 1 0 0 0
1 1 1 1 0 0
1 1 1 1 1 0
1 1 1 1 1 1
편집 : 아래에 귀하의 의견을 바탕으로, 당신 같은 소리이 3-D RGB를 이미지 행 B
과 B
의 각 색상면에 행렬 A
을 곱한다고 가정합니다. 이것은 이미지의 상단 삼각형 부분 (모든 0에 해당)을 검정색으로 설정 한 실제 결과를 나타냅니다.
>> B = randi([0 255],[6 6 3],'uint8'); % A random uint8 matrix as an example
>> B(repmat(~A,[1 1 3])) = 0; % Set upper triangular part to 0
>> B(:,:,1) % Take a peek at the first plane
ans =
8 0 0 0 0 0
143 251 0 0 0 0
225 40 123 0 0 0
171 219 30 74 0 0
48 165 150 157 149 0
94 96 57 67 27 5
(
B
매치
A
들 중 행과 열 IE) 6에 의하여 -6- 별 3 행렬
B
이다 가정 대신 여기 승산 한 인덱스를 사용하여 용액 (상기 함수
REPMAT) 인
REPMAT를 호출하면 A
의 부정 버전이 3 번 복제되어 B
과 같은 크기가됩니다. 결과는 B
에 logical index으로 사용되며 0이 아닌 인덱스는 0으로 설정됩니다. 곱하기 대신 인덱싱을 사용하면 A
및 B
을 동일한 데이터 형식으로 변환하는 것에 대해 걱정할 필요가 없습니다. 이 경우 곱셈은 A
이 double
이고 B
이 uint8
유형입니다.
하위 삼각 행렬 함수는 homerolled 솔루션을 능가합니다. –
네, 맞습니다. +1 –
감사합니다. 내 문제는 여기에이 행렬에 이미지가 포함 된 행렬을 곱하려고합니다. ::> 행렬에 3 개의 매개 변수 (W, H, RGB)로 구성된 이미지가 포함되어 있습니다. plz 시도하고 문제를 확인한 후 나를 돕습니다. 감사합니다. –