当前位置:  开发笔记 > 编程语言 > 正文

如何在不打印的情况下在Matlab循环中监视变量?

如何解决《如何在不打印的情况下在Matlab循环中监视变量?》经验,为你挑选了1个好方法。

我正在运行一个循环,其中计算变量.能够看到这些变量的当前值是有用的.打印它们没有用,因为循环的其他部分正在打印大量文本.此外,在Workspace选项卡上,值不会显示,直到循环结束.

有没有办法监控这些变量,通过将它们打印到窗口中?



1> Luis Mendo..:

您可以使用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


这是一个很好的解决方案,假设这是一个长循环,并且她/他想要查看的值每秒更新少于一次.否则它会使循环相当慢(我猜)...?
怎么样`drawow('limitrate')`
如果循环中的计算是限制因素而不是迭代次数,那么将值放在`waitbar`的标题中也是一个不错的选择.
推荐阅读
N个小灰流_701
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有