为什么在函数定义之后*而不是之前调用函数的输出(在函数内定义)时出现错误?

时间:2019-01-02 03:57:53

标签: matlab function nested

我的代码执行了我想要的操作,但是我想了解为什么它会执行它的操作。我发现在MATLAB中,如果我在函数定义之后调用函数的输出,则会收到错误,但如果在函数定义之前调用它,则不会。我的印象是MATLAB正在把车推到马的前面,我想知道为什么我对这种印象有误。

function [out,outt]=f_testFunctionWithinFunction(arg_in)
    % function has to be invoked BEFORE its definition.
    out=f_inside(arg_in); 

    function use=f_inside(argg_in),
        use=sin(argg_in);
    return

    outt=f_inside(arg_in); 

return

表达式out=f_testFunctionWithinFunction(5)产生-0.9589=sin(5)。但是,由于要求[out,outt]=f_testFunctionWithinFunction(5)"outt"会产生一条错误消息。为什么?

1 个答案:

答案 0 :(得分:1)

您应该使用end而不是return结束函数。尝试:

function [out,outt]=f_testFunctionWithinFunction(arg_in)
% function has to be invoked BEFORE its definition.
disp('test')
out=f_inside(arg_in);

function use=f_inside(argg_in),
use=sin(argg_in);
end

outt=f_inside(arg_in);

end