매트릭스에 nlfilter
을 포함하는 함수를 테스트하고 있습니다. 목적을 위해 무작위 11X11 매트릭스를 만들고 nlfilter
의 도움으로 7x7 이동 창을 사용합니다. 난 funct('dirvar')
실행할 때'nlfilter'는 어떻게 행렬을 덧붙일 수 있습니까?
function funct(fh)
I = rand(11,11)
ld = input('Enter the lag = ') % prompt for lag distance
fh = @dirvar,@diagvar;
A = nlfilter(I, [7 7], fh);
% Subfunction
function [h] = dirvar(I)
c = (size(I)+1)/2
EW = I(c(1),c(2):end)
h = length(EW) - ld
end
% Subfunction
function [h] = diagvar(I)
c = (size(I)+1)/2
NE = diag(I(c(1):-1:1,c(2):end))
h = length(NE) - ld
end
end
그것이 지연 요청 제 4 개 행의 요소를 선택하고, 요소가 요소 진행 다음과 같이 내 함수이다. 첫 번째 행의 9 번째 요소에서 11 번째 요소까지 예상되는 동작 인 마지막 요소 (자동 채우기)로 0이 필요합니다.
하지만 funct('diagvar')
을 실행할 때 기능을 대신 대각선 요소를 선택하고 패딩가는 (dirvar에서와 같이) 동일하게 동작합니다. 첫 번째 행에 대해서는 첫 번째 행과 세 번째 행의 첫 번째 요소를 선택하고 행의 끝까지이를 선택합니다. 두 번째 행 - 첫 번째 요소는 두 번째 행 - 첫 번째 요소 + 첫 번째 행 - 두 번째 요소 다음에 두 개의 0이옵니다.
11X11의 임의의 행렬을 만들고 diagvar
에서 행을 실행하면 행렬에서 중심 값이 선택되고 예상대로 진행됩니다.
옵션 # 3이 트릭을했습니다. 사실 # 2도 작동했지만 # 3을 사용했습니다. 고마워요! –