我正在运行一个循环,在其中计算变量。能够看到这些变量的当前值将非常有用。打印它们并不实用,因为循环的其他部分正在打印大量文本。另外,在“工作区”选项卡上,这些值直到循环结束后才会显示出来。
是否有一种方法可以监视这些变量,例如通过将它们打印到一个窗口中?
是否有一种方法可以监视这些变量,例如通过将它们打印到一个窗口中?
text
对象创建一个图形,并根据所需变量更新其 'string'
属性。h = text(.5, .5, ''); %// create text object
for n = 1:1000
v = n^2; %// loop computations here. Variable `v` is to be displayed
set(h, 'string', ['Value: ' num2str(v)]);
drawnow %// you may need this for immediate updating
end
为了更快的速度,你可以每隔S
个迭代更新一次:
h = text(.5, .5, ''); %// create text object
S = 10; %// update period
for n = 1:1000
v = n^2; %// loop computations here. Variable `v` is to be displayed
if ~mod(n,S) %// update only at iterations S, 2*S, 3*S, ...
set(h, 'string', ['Value: ' num2str(v)]);
drawnow %// you may need this for immediate updating
end
end
或者使用drawnow('limitrate')
,如@Edric所提到的:
h = text(.5, .5, ''); %// create text object
for n = 1:1000
v = n^2; %// loop computations here. Variable `v` is to be displayed
set(h, 'string', ['Value: ' num2str(v)]);
drawnow('limitrate')
end
S
次迭代检查变量,他们可以在 if
分支中使用 mod
。我会更新。 - Luis Mendodrawnow('limitrate')
怎么样? - Edric
profile on
开始记录,执行代码,输入profile off
停止记录,然后输入profile viewer
或类似命令查看结果。如果只是运行时间长,并不需要优化,那么请注意在循环中添加任何检查都会使其变得更慢。你也可以像这样添加一些东西:if(mod(ii, 1000)==0) disp('每1000次迭代显示某些内容'); end
- Matthew Gunn