Matlab:从另一个函数终止一个函数

时间:2013-10-21 19:42:46

标签: matlab

我有一个函数A,它将调用函数B,从函数B我想终止函数A. 主要问题是函数B只能在函数A不运行时运行。 我知道没有类似ctr + c版本的脚本,但这不是我想要的,因为它不是需要终止但功能不同的函数本身。有没有办法做到这一点?

**function A**

B(varargin)

end

**function B(varargin)**

kill_function_A

some more statements

end

让我对此进行修改,以便更清楚:

**function A**
if some_statement_is_true
B(varargin)
end
much more code

**function B(varargin)**
terminate A
update A (this is the reason why it needs to be terminated)
A (restart A, since it is now updated, I can terminate B within A if it is active)
end

请注意,在B能够运行之前需要终止A.所以“B;返回”是不可能的。 (到目前为止,感谢所有答案)

2 个答案:

答案 0 :(得分:0)

您真正想要的是在调用A之后不在B执行语句(如果需要)。使用以下代码可以轻松完成此操作。

function A

terminate = B;
if terminate == true
    return
end

end

function terminate = B

terminate = true;

end

答案 1 :(得分:0)

这会有效吗?

function A
if some_statement_is_true
  B(varargin)
  return
end
much more code

function B(varargin)
  update A (this is the reason why it needs to be terminated)
  A (restart A, since it is now updated, I can terminate B within A if it is active)
end

它不会“停止”A,但有效A除了调用B之外什么也不做,这会导致或多或少相同的结果。 或者,您应该运行B并更新some_statement_is_true

function A

while some_statement_is_true
  B(varargin);
  some_statement_is_true = ...; % make sure this gets updated
end
much more code

function B(varargin)
  update A;
end

修改

如果A是独立的.exe,您可以执行以下操作,停止并运行新版本:

function A
if some_statement_is_true
  B(varargin);
  exit();
end
much more code

function B(varargin)
  update A;
  system('A.exe');
end

我已成功将此方案用于自我更新应用程序,需要重新启动MATLAB。