1. ホーム
  2. matlab

[解決済み] matlab、デフォルトの図サイズを設定するが、位置は気にしない?

2022-02-07 23:30:46

質問

に似ている。 グラフの図形の大きさを設定する

を設定したいだけなのですが。 幅と高さ 位置は気にしないでください。希望する動作は、図を自由にドラッグできるが、再描画するたびにサイズが固定されることです。

上記のリンクにある方法は、位置の(x,y)座標を提供しなければならないので、コードが発展したり、私が別のコンピュータを使うときに煩わしいので好きではありません。しかし、おそらくそのset()関数を使用するよりスマートな方法があるのでは?

EDIT: Cool @ answer below, here's my updated function. もう一つは、図が常にフォーカスを引っ張らないように、"silent" にすることです。

function h = sfigure(h,s1,s2)
% SFIGURE  Create figure window (minus annoying focus-theft).
%
% Usage is identical to figure.
%
% Daniel Eaton, 2005
%
% See also figure
%
% Modified by Peter Karasev, 2012, to optionally set scale
%

if nargin>=1 
    if ishandle(h)
        set(0, 'CurrentFigure', h);
    else
        h = figure(h);
    end
else
    h = figure;
end

if( nargin > 1 )
  scaleX = s1;
  scaleY = s1;
  if( nargin > 2 )
    scaleY = s2;
  end
  pos = get(h,'Position');
  pos(3:4) = [400 300].*[scaleX scaleY];
  set(gcf,'Position',pos);
end

解決方法は?

対応する get 関数を使用します。

figure
pos = get(gcf,'Position');
pos(3:4) = [w h];
set(gcf,'Position',pos);

これは、デフォルトの位置を維持したまま、幅と高さだけを変更するものです。