我正在尝试使用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()'吗?
提前感谢您的回答!
答案 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
希望有人可以来改进它以变得更强大。 :)