如何在Matlab中通过字符串或变量识别图形或子图?

时间:2013-06-23 16:24:07

标签: matlab matlab-figure

我喜欢imshow在OpenCV中的行为:如果你要求在具有给定名称的窗口中显示图像,并且该名称存在,那么它会重绘此窗口,如果此命名窗口尚不存在,那么它创造它。

是否可以使用Matlab中的数字模拟此行为?

如果我写

if ishandle(spectrum)
   figure(spectrum);
else
   spectrum = figure();
end

如果第一次没有定义频谱变量,我会收到错误。

1 个答案:

答案 0 :(得分:1)

在检查频谱变量是否为句柄之前,您可以检查它是否存在:

if exist('spectrum', 'var') && ishandle(spectrum)
   figure(spectrum);
else
   spectrum = figure();
end

或者,在将光谱分配给图形手柄之前,您可以将其分配给虚拟值(例如,nan)。因此,当它到达 if 分支时,它已经有一个值,Matlab不会抛出错误:

spectrum = nan;

% ... stuff happens, maybe even a while or for loop ...

if ishandle(spectrum)
   figure(spectrum);
else
   spectrum = figure();
end