【问题标题】:MATLAB Guide handles between Callback and Function回调和函数之间的 MATLAB Guide 句柄
【发布时间】:2014-01-27 07:40:49
【问题描述】:

我有一个 MATLAB Guide 项目。我在同一个 .m 文件中混合了常规函数和回调。

我从回调中调用一个函数,并且该函数通过for 循环运行,我希望更新一个字符串框。这是一个例子:

从一个回调(显示的摘录)我调用这个函数:

[color] = get_color(images, handles);
set(handles.ProcessImage, 'string', 'Processing Complete');

get_color 函数位于同一个 .m 文件中

function [color_corrections] = get_color(images, handles) 

[n, ~, ~, ~] = size(images); % Find the number of images

for imgIdx=1:n % For each image

    set(handles.ProcessImage, 'String', 'Processing Image #');

end
end

问题是handles.ProcessImagefor 循环期间没有得到更新,但是当它从函数返回时它被写入'Processing Complete'

有什么想法吗?

谢谢, 汤米麦克

【问题讨论】:

    标签: matlab matlab-guide


    【解决方案1】:

    在紧密循环中,计算优先,因此 Matlab 最终不会费心更新 GUI,直到它有时间,即一旦循环完成。您可以在更新字符串后通过调用drawnow 来强制进行 GUI 更新,如下所示:

    set(handles.ProcessImage, 'String', 'Processing Image #');
    drawnow; % force the new string to be rendered
    

    请注意,如果循环中的代码很短但有很多迭代,您可能会受到巨大的性能影响。如果迭代次数相对较少,但每次迭代都需要很长时间,那么您应该不会注意到差异。

    【讨论】:

    • 嗨,一切都被调用并正常工作。在循环期间无论如何要更新?也许使用线程方法?
    • @user3238504 抱歉,我意识到我在所有解释中都隐藏了答案。已更新。
    猜你喜欢
    • 2017-10-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-10-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-03-14
    相关资源
    最近更新 更多