Вот часть функции, которую я пытаюсь проверить для более крупной функции.
function funct(subfn)
clear all; % this is now removed
clc;
I = rand(11,11);
ld = input('Enter the lag = ') % prompt for lag distance
A = nlfilter(I, [7 7], str2func(subfn));
% 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
Если я удаляю оператор clear all
, появляется следующая ошибка:
Enter the lag = 1
ld =
1
??? Error using ==> feval
Undefined function or method 'dirvar' for input arguments of type 'double'.
Error in ==> nlfilter at 61
b = mkconstarray(class(feval(fun,aa(1+rows,1+cols),params{:})), 0, size(a));
Error in ==> funct at 5
A = nlfilter(I, [7 7], str2func(subfn));
Пожалуйста игнорируйте эту часть, поскольку я сейчас удалил clear all
утверждение, как предлагается в ответе ниже.Когда я запускаю funct('dirvar')
, меня приветствует эта ошибка:
Enter the lag = 1
ld =
1
??? Reference to a cleared variable subfn.
Error in ==> funct at 6
A = nlfilter(I, [7 7], str2func(subfn));
В чем может быть причина?