2014-04-16 2 views
0

다차원 배열의 값을 비교할 필요가 있습니다.이 비교에 따르면 같은 인덱스에있는 같은 크기의 새 행렬에 같은 인덱스의 다른 행렬 값을 할당해야합니다. 이 작업을 수행하는 방법에 대해 나에게 아이디어를 줄 수 있습니까?MATLAB의 개별 매트릭스 elemets 비교?

아래 코드는 for 루프를 사용하지만 for 루프를 사용하지 않고이 작업을 수행해야합니다.

for i = 1:sizeOfMatrix(1, 1) 
    for j = 1:sizeOfMatrix(1, 2) 
     if grayImage(i, j) > t 
      result(i, j) = 0; 
     else 
      result(i, j) = grayImage(i, j); 
     end 
    end 
end 

여기서 t는 내가 비교해야하는 값입니다.

답변

1

사용 logical indexing :이 조건부 행렬 요소에 액세스 할 수있는 훨씬 빠르고 청소기 방법입니다

result = zeros(size(grayImage)); 
result(grayImage <= t) = grayImage(grayImage <= t); 

.

양자 택일로, 당신은 할 수 있습니다 :

result = grayImage; 
result(grayImage > t) = 0; 
+0

그것은 잘 작동했다. 고마워. 그런데 왜 "grayImage> t"대신에 "grayImage <= t"를 사용 했는가? 무슨 일인지 정확히 이해할 필요가있어. – enesanbar

+0

'grayImage> t '로 대체 할 수있는 방법을 추가했습니다. 이 조건은 0을 배치 할 픽셀에 대한 조건입니다. 따라서 이미지에'result'를 초기화 한 다음이 조건을 사용하여 관련 픽셀을 0으로 설정하거나 (두 번째 옵션) 'result'를 0으로 초기화하고 상응하는 조건 인'grayImage <= t'를 사용할 수 있습니다 이미지 값을 가져올 픽셀을 설정합니다 (첫 번째 옵션). 두 옵션 모두 똑같이 유효합니다. – buzjwa