Это не о чем беспокоиться.Это происходит потому, что nlfilter необходимо оценить вашу функцию, чтобы знать, какой вывод создать.Таким образом, он использует feval один раз, прежде чем начать перемещаться по изображению.Вывод этого feval вызова - это то, что вы видите в первый раз.
Из nlfilter кода:
% Find out what output type to make.
rows = 0:(nhood(1)-1);
cols = 0:(nhood(2)-1);
b = mkconstarray(class(feval(fun,aa(1+rows,1+cols),params{:})), 0, size(a));
% Apply fun to each neighborhood of a
f = waitbar(0,'Applying neighborhood operation...');
for i=1:ma,
for j=1:na,
x = aa(i+rows,j+cols);
b(i,j) = feval(fun,x,params{:});
end
waitbar(i/ma)
end
Вызов в 4-й строкеto eval - это то, что вы наблюдаете как первый вывод EW, но он не используется ни для чего, кроме как превращение матрицы b в правильный класс.Все правильные итерации выполняются в цикле для ниже.Это означает, что наблюдаемые вами «повторяющиеся» значения не влияют на вашу конечную матрицу вывода, и вам не о чем беспокоиться.