나는 음수가 아닌 R 행렬을 가지고 있습니다. 행렬은 실제로 2D 높이 맵이며이 행렬에서 모든 로컬 최대 값을 찾고 싶습니다. 인접 요소가 서로 같은 (그리고 그것들이 총체적으로 최대치 인) "평탄한"봉우리의 경우, 각 "평평한"영역 내에서 적어도 하나의 좌표를 얻는 한 어떤 일이 일어나 든 상관 없습니다.R에 2D 숫자 "높이 맵"행렬이 주어지면 모든 로컬 최대 값을 어떻게 찾을 수 있습니까?
효율적으로 수행 할 수있는 기능이 있습니까? 분명히 루프를 수동으로 작성하여 모든 요소를 개별적으로 테스트 할 수 있지만 R에서 수행하는 것은 매우 느립니다. 매트릭스 당 평균 약 884 개의 요소로 약 백만 개의 매트릭스에 대해이 작업을 수행해야합니다.
행렬을 입력으로 사용하고 열 1이 행 좌표이고 열 2가 열 좌표이며 행렬의 각 최대 값에 대해 하나의 행을 갖는 함수가있는 것이 이상적입니다.
행렬의 가장자리에있는 로컬 최대 값이 허용됩니다. 행렬 외부의 영역은 높이가 0 인 것으로 처리 될 수 있습니다.
재현 예 행렬 사용 :
set.seed(5)
msize <- 20 # Change this to whatever you like
x <- matrix(data=abs(rnorm(msize*2)), nrow=msize, ncol=msize)
집합적인 로컬 최대 값을 정의 할 때 두 개의 대각선으로 만지는 요소가 "이웃"으로 계산됩니까? 또한 사람들이 작업 할 수있는 비교적 단순한 (예 : 10x10 매트릭스) 구조를 만들 수 있습니까? –
대각선 요소의 경우, 이웃으로 간주되는지 여부는 실제로 신경 쓰지 않습니다. 왜냐하면 2 개 (또는 그 이상)의 등가 치 로컬 최대 점이 경부 이웃이므로, 적어도 내가 얻은만큼 행복합니다 * 그들 중 하나. 나는 간단한 예제 행렬을 추가하여 작동하지 않을 것이다. –