2012-09-14 6 views
1

저는 2D 행렬을 가지고 있으며 x 및 y 방향으로 각각 M 및 N 크기의이 행렬에서 (i, j)의 이웃을 찾고 싶습니다. 나는 그것이 쉽다는 것을 안다. 그러나 나의 문제는 (i, j)가 구석에 가깝고 M과 N이 클 때이다. 이 경우 매트릭스를 초과하고 싶지 않습니다. MATLAB에서이 문제에 대한 함수 또는 간단한 솔루션이 있습니까? 만약 내가 제대로 이해하고특정 위치의 이웃 찾기

+0

당신이 '이웃을 찾아'무엇을 의미합니까? 하위 행렬 (예 : 항목 (i, j) 주위에 3x3 행렬)을 추출 하시겠습니까? 아니면 근처에서 일부 계산을 수행 하시겠습니까? 예 : 일부 필터? 귀하의 질문에 더 구체적으로 노력하십시오. – angainor

답변

5

, 당신은 행렬이 j+Ni+M 및 열 j-N에 행 i-M에서 예정으로 중심으로, 행렬에서 행렬을 추출하고 싶습니다.

이 경우 당신이 유효하지 않은 인덱스를 선택하지 않도록하려는 경우, 최소/최대 기능을 사용하여 선택을 잘라 수 있습니다 예 :

matrix = randi(10,20,15); 
siz = size(matrix); 

i=2; 
j=5; 
M=10; 
N=3; 

selectrows = max(1,i-M):min(siz(1),i+M); 
selectcols = max(1,j-N):min(siz(2),j+N); 
result = matrix(selectrows, selectcols); 
관련 문제