在MATLAB

时间:2015-05-14 17:34:21

标签: matlab matlab-figure

我正在尝试使用MATLAB为时钟指针的运动设置动画。我在一个名为'draw_clock.m'的文件中创建了'draw_clock()'程序/脚本,就像这样。

function draw_clock()
    set_figure();
    draw_clock_hands();
end

function set_figure()
    figure;
    hold on;
    axis off;
    title('Clock');
end

然后我有一个名为'animate_clock.m'的脚本文件,其中包含以下内容:

hours = 0:12;
minutes = 0:59;
for i = 1:numel(hours)
    for j = 1:numel(minutes)
        draw_clock();
        pause(0.05);
        refresh;
    end
end

当我运行'animate_clock.m'时,会打开每个帧的新窗口/时钟图形,而不是在同一画布/图形上重绘。我理解为什么会发生这种情况,因为每次调用'draw_clock()'时都会调用'set_figure()'。我是MATLAB的新手,所以如果有办法停止使用上面的代码框架创建新的图形。我想如果我能检测出是否已经打开了一个图形对象,那么我可以在下次调用它时跳过调用'draw_clock()'中的'set_figure()'吗?

提前感谢您的回答!

1 个答案:

答案 0 :(得分:0)

因此,在搜索和阅读文档后,我认为有几种不同的方法可以检测matlab数字是否已经存在。我认为有用(而且相对简单)的一个是:   - 将“名称”属性分配给图窗口   - 使用'findobj(...)'方法查找是否存在具有指定名称的对象   - 如果数字已存在,请使用'hold on'重复使用旧数字   - 否则,创建一个名为'figure('Name','foo figure')'

的新图形

对于我的情况,'set_figure()'方法将变为这样:

function set_figure()
    fig_name = 'My Clock';
    if isempty(findobj('Name', fig_name))
        figure('Name', fig_name);
    end

    hold on;
    axis off;
end        

希望有人可以来改进它以变得更强大。 :)