Передача функций как аргументы в 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 сообщает, дает мне вышеупомянутое сообщение об ошибке. Я никогда не передавал имя функции как аргумент прежде. Где я иду не так, как надо?

26
задан pb2q 22 May 2012 в 07:20
поделиться

2 ответа

Вы также можете использовать дескрипторы функций вместо строк, например:

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

Для получения дополнительной информации см. Документацию по дескрипторам функций

40
ответ дан 28 November 2019 в 07:08
поделиться

Вы можете попробовать в func2.m :

function t = func2(x, y, funcName)  % no quotes around funcName
    func = str2func(funcName)
    t = func(x, y)
end
9
ответ дан 28 November 2019 в 07:08
поделиться
Другие вопросы по тегам:

Похожие вопросы: