MATLABのTips figureを見やすく並べて表示する方法

スポンサーリンク
最近twitterを始めました。全然使い方がわかりません。
(学生のときに始めておけばよかった。。。)

工学系のネタで書きたいのですが、本日は記事を書く時間がないのでMATLABのTIPSネタを紹介したいと思います。みなさんMATLABでfigureを出力すると同じところにfigureが出力するので、図を比較しにくくて困りません?

例えば、下記コードで9つのfigureを出力すると、下図のようになります。

N=3;
M=3;
for n=1:N*M
    figure
end

図が同じ位置に出力してしまうので、とりあえず、右クリックしながらカーソル動かして図を移動させてませんか?
(MATLAB2020では微妙にずれて出力してくれますが….)

スポンサーリンク

上記の問題を解決してくれるのが下記functionです。

function [fig1]=figure_alignment(fn,n,N,M)
NUMBER=zeros(N,M);
NUMBER2=[];
for nn=1:N
    NUMBER(nn,:)=0:M-1;
    NUMBER2=[NUMBER2 1:M];
end
set(0,'Units','pixels') 
scnsize = get(0,'ScreenSize');
fig1 = figure(fn);
% % [left bottom width height]
position = get(fig1,'Position');
outerpos = get(fig1,'OuterPosition');
borders = outerpos - position;
edge = -borders(1)/2;
% pos1 = [scnsize(3)/M*NUMBER(floor((n-1)/N)+1,rem(n,M+1)) - edge,...
%         scnsize(4) * (1/M)*( floor((n-1)/N)+1),...
%         scnsize(3)/M - edge,...
%         scnsize(4)/N];
pos1 = [scnsize(3)/M*NUMBER(floor((n-1)/M)+1,NUMBER2(n)) - edge,...
        scnsize(4) - (scnsize(4) * (1/N)*( (floor((n-1)/M)+1))),...
        scnsize(3)/M - edge,...
        scnsize(4)/N];
set(fig1,'OuterPosition',pos1)

% % floor(n/N)        行
% % rem(n/M)        列
end

このfunctionファイルを使用すれば、下記コードでfigureを綺麗に並べることができます。

close all
N=3;
M=3;
for n=1:N*M
    [fig1]=figure_alignment(n,n,N,M);
end

 

 

今回はこのへんでGood luck

スポンサーリンク

コメント