0

我喜欢imshowOpenCV 中的行为方式:如果您要求在窗口中显示具有给定名称的图像,并且该名称存在,则它会重绘该窗口,如果该命名窗口尚不存在,则创建它。

是否可以用 Matlab 中的数字来模拟这种行为?

如果我写

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

如果第一次未定义频谱变量,我会收到错误消息。

4

1 回答 1

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
于 2013-08-21T23:44:23.950 回答