在另一个函数上使用函数

时间:2016-07-16 15:36:38

标签: matlab function

我有以下工作功能(a)。该函数负责解决另一个函数中的错误。

function [a] = algorithm1(z)
if (z==0)
    j=1;
    a=j;
    disp('Your computer is switch on from state offline')
elseif (z==1)
    j=1;
    a=j;
    disp('Your computer is working properly')
elseif (z==2)
    %j=2;  Value 2 for status of rebooting
    disp('Your computer is rebooting')
    j=1;
    a=j;
    disp('Your computer is working properly after rebooting')
else
    disp('unidentified error')
end

end 

我的问题是如何制作另一个function(b)以上function(a)作为其解决方案。我希望它会像这样出现

T=100 status 1, your computer is working properly
T=101 status 1, your computer is working properly
T=102 status 2, your computer is working properly after rebooting
.
.
.
T=200 status 1, your computer is working properly

T是循环函数,状态函数(b)是随机生成的。如何将函数(a)赋予函数(b),以便使用函数(a)连续求解错误。

1 个答案:

答案 0 :(得分:1)

如果要将函数传递给另一个函数,则需要使用函数句柄an anonymous function

一般语法如下所示:

handle = @(input1, input2)function_to_call(input1, other_input, input2)

在您的情况下,您可以像这样编写函数b

function b(afunction)
    for k = 1:100
        afunction(randi([1 2]));
    end
end

然后致电ba传递一个句柄。

afunction = @(z)a(z);
% or just: afunction = @a

b(afunction)

或者,如果您的路径上同时显示ab,则只需直接从a致电b

function b()
    for k = 1:100
        a(randi([1 2]));
    end
end