Синтаксис для nlfilter
в MATLAB:
B = nlfilter(A, [m n], fun)
Я рассматриваю возможность создания M-файла с несколькими подфункциями, которые будут вызываться с использованием функции test
; то есть я хотел такой выбор, чтобы каждый раз, когда я мог выбирать, какая подфункция вызывается в fun
.
% Main Function
function test
B = nlfilter(A, [m n], fun)
% Subfunction 1
function sub1
.......
% Subfunction 2
function sub2
.......
% Subfunction 3
function sub3
.......
Можно ли будет обобщить fun
так, чтобы я мог позвонить либо sub1
, либо sub2
, либо sub3
из test
.
EDIT
Моя функция:
function funct(subfn)
clc;
I = rand(11,11);
ld = input('Enter the lag = ') % prompt for lag distance
fh = {@dirvar,@diagvar};
feval(fh{subfn});
A = nlfilter(I, [7 7], 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
Когда я запускаю funct(1)
, теперь это вывод с ошибкой:
Enter the lag = 1
ld =
1
??? Input argument "I" is undefined.
Error in ==> funct>dirvar at 12
c = (size(I)+1)/2
Error in ==> funct at 6
feval(fh{subfn});
Я озадачен, в чем проблема сейчас?