0

我正在寻找一种设置条件断点的方法,该断点仅在满足条件的第二次(或第 n 次)时停止,例如:

function f = myfunc(x)
for t = 1:1000
   x = x+x^0.5; %I want to stop here the second time the function is called and t == 666
end
f = x;

我知道每次满足条件时如何在断点处停止,但是如果我想查看第二次被击中的情况,我首先需要等待几分钟,然后按 f5 并再等待几分钟。这很烦人,因为它让我再次失去焦点。如果我想看第十次,那就更糟了。

我正在寻找一种不需要我调整需要停止的函数代码的解决方案。

4

2 回答 2

2

这是一个有趣的想法,我认为它可以为您提供部分解决方案。

写一个函数mystop.m

function flag = mystop

persistent counter

if isempty(counter)
    counter = 0;
else
    counter = counter+1;
end

if counter>=2
    flag = true;
else
    flag = false;
end

myfunc现在在行内设置一个条件断点x = x+x^0.5;,条件为

t == 666 && feval(@()mystop)

设置一个测试功能来练习myfunc几次:

function [f1,f2,f3,f4,f5] = mytest

clear mystop

f1= myfunc(1)
f2= myfunc(2)
f3= myfunc(3)
f4= myfunc(4)
f5= myfunc(5)

当你运行时,它应该只在第二次被击中时mytest停止(并且 t 是 666) - 换句话说,在计算时。myfuncf2

请注意,您需要包含该行clear mystop,以便在调用之间重置持久变量mytest。或者,您可以clear mystop在运行之间手动调用mytest.

显然 - 如果您希望它仅在第 3 次、第 10 次、第 n 次等之后停止,请将counter>=2上述条件修改为counter>=n.

于 2013-05-15T11:11:37.293 回答
1

您将不得不调整代码,在那里管理一个可以计算到达那里的次数的标志

于 2013-05-14T09:36:30.257 回答