スポンサーリンク
最近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
スポンサーリンク
コメント