Передача функций в качестве аргументов в Matlab
Я пытаюсь написать функцию, которая получает два массива и имя другой функции в качестве аргументов.
например.
main.m:
x=[0 0.2 0.4 0.6 0.8 1.0];
y=[0 0.2 0.4 0.6 0.8 1.0];
func2(x,y,'func2eq')
func 2.m :
function t =func2(x, y, z, 'func') //"unexpected matlab expression" error message here
t= func(x,y,z);
func2eq.m:
function z= func2eq(x,y)
z= x + sin(pi * x)* exp(y);
Matlab сообщает мне следующее сообщение об ошибке. Раньше я никогда не передавал имя функции. Где я ошибаюсь?
Ответы
Ответ 1
Вы также можете использовать дескрипторы функций, а не строки, например:
main.m
:
...
func2(x, y, @func2eq); % The "@" operator creates a "function handle"
Это упрощает func2.m
:
function t = func2(x, y, fcnHandle)
t = fcnHandle(x, y);
end
Для получения дополнительной информации см. документацию по ручкам функций.
Ответ 2
Вы можете попробовать func2.m
:
function t = func2(x, y, funcName) % no quotes around funcName
func = str2func(funcName)
t = func(x, y)
end