closeコマンドの応用

卒業研究がありましてしばらく更新できていませんでした(元々、頻繁に更新してませんが)

卒研の過程で思いつきで作ったcloseの応用関数が思いのほか便利だったので紹介したいと思います。

解析中に、、、
「うわぁ〜  figure出過ぎでおも!!」
「figure1〜50とか多すぎワロタ」

「・・・」
「でもこの48番目はなかなかいい結果で比較したいな」
と、ここで指定したfigure番号以外のfigureを消すことが出来たら便利だなと考えました。

元々こういう場合には、 以下のように入力して

>> close([1:47 49:50]);

figureが1〜50まで出力されていた時にこのように48を残して消すことが出来ます。

ですが、1〜50のうち一つでも消してしまっていたらうまく作動しませんし、
入力が面倒臭すぎでやってられないので関数化してみたらいいじゃないかと思いました。


調べると似た質問がMathWorksの回答にありました。
http://bit.ly/VSRAJx


これを応用して、関数化します。

function noclose(FigureNumber)
% noclose  指定したfigure以外を閉じる
% FigureNumber : 残したいfigureのハンドル番号
  h = findobj('Type', 'figure');
  bi = (h == FigureNumber);

  if sum(bi)
    close(h(~bi));
  else
    error('与えられたハンドル番号のfigureは存在しません。');
  end
end

nocloseとして作成したこの関数は指定したfigureのハンドル番号を与えることで
それ以外のfigureをすべて閉じる関数です。


普段、

>> figure(1)

このようにfigureのハンドルを指定してやれると便利なのですが
私は

>> figure('Name', 'hogehoge');

と、名前を付けたり
Positionで位置を指定するとハンドルが設定できないので役に立ちます。

それでは!