for と parfor でfigureの画像が異なるのを解決したいです

조회 수: 1 (최근 30일)
Kazutoshi Ishioka
Kazutoshi Ishioka 2020년 10월 22일
댓글: Kazutoshi Ishioka 2020년 10월 22일
お世話になります
並列forループを用いた場合に、figureの見た目が変わってしまうのを解決したいです。
【内容】
figureをプロットして、以下のコードでファイルに保存しております
>> T_IMGFRAME = getframe( gcf ) ;
>> imwrite( T_IMGFRAME.cdata , T_FILE_NAME ) ;
通常に保存した場合と、並列forループ内で保存した場合で、同じコードで生成したfigureなのに画像に違いがあります
通常で保存した画像に比べて、並列処理内で保存した画像は、ラベル等の文字が小さくプロットした線も細いです
並列処理でも通常で保存した場合と同じ画像で保存できるでしょうか?
【参考画像】
よろしくお願い致します
  댓글 수: 1
Kazutoshi Ishioka
Kazutoshi Ishioka 2020년 10월 22일
%% サンプルコードです
%%---------------------------------------------------------------------------
disp( ['テスト用のパラメタ設定'] ) ;
T_NUM = 30 ;
T_DAT = floor( rand( T_NUM , 5 )*100 ) ;
%%---------------------------------------------------------------------------
%%---------------------------------------------------------------------------
%%---------------------------------------------------------------------------
%%---------------------------------------------------------------------------
disp( ['ノーマル実行'] ) ;
T_IMG_DIR_NAME = [ '.\\ImageSeriesSTD' ] ;
mkdir( T_IMG_DIR_NAME ) ;
for( T_CI=(1:+1:T_NUM) )
fg = figure('Color',[1 1 1]) ;
plot( (0:+1:360) , T_DAT(T_CI,2)*sin( (0:+1:360)*(2*pi)/360*50/T_DAT(T_CI,3) ) , 'b-' ) ;
hold on ;
plot( (0:+1:360) , T_DAT(T_CI,4)*sin( (0:+1:360)*(2*pi)/360*50/T_DAT(T_CI,5) ) , 'b-' ) ;
plot( 180 , T_DAT(T_CI,1) , '*r' ) ;
text( 200 , T_DAT(T_CI,1) , [ 'TEXTです' ] ...
, 'FontWeight','bold' , 'FontSize',30 , 'Color',[0.2 0.3 1.0] , 'FontName','MS ゴシック' ) ;
title( [ 'これは title です' ] ) ;
xlabel( [ 'これは X 軸です' ] ) ;
ylabel( [ 'これは Y 軸です' ] ) ;
grid on ; box on ;
T_IMGFRAME = getframe( gcf ) ;
imwrite( T_IMGFRAME.cdata , [ T_IMG_DIR_NAME '\TestImage' num2str(T_CI,'%04d') '.png' ] ) ;
close( fg ) ;
end
%%---------------------------------------------------------------------------
%%---------------------------------------------------------------------------
%%---------------------------------------------------------------------------
%%---------------------------------------------------------------------------
%%---------------------------------------------------------------------------
%%---------------------------------------------------------------------------
disp( ['パラレル実行'] ) ;
T_IMG_DIR_NAME = [ '.\\ImageSeriesPAR' ] ;
mkdir( T_IMG_DIR_NAME ) ;
parfor( T_CI=(1:+1:T_NUM) )
fg = figure('Color',[1 1 1]) ;
plot( (0:+1:360) , T_DAT(T_CI,2)*sin( (0:+1:360)*(2*pi)/360*50/T_DAT(T_CI,3) ) , 'b-' ) ;
hold on ;
plot( (0:+1:360) , T_DAT(T_CI,4)*sin( (0:+1:360)*(2*pi)/360*50/T_DAT(T_CI,5) ) , 'b-' ) ;
plot( 180 , T_DAT(T_CI,1) , '*r' ) ;
text( 200 , T_DAT(T_CI,1) , [ 'TEXTです' ] ...
, 'FontWeight','bold' , 'FontSize',30 , 'Color',[0.2 0.3 1.0] , 'FontName','MS ゴシック' ) ;
title( [ 'これは title です' ] ) ;
xlabel( [ 'これは X 軸です' ] ) ;
ylabel( [ 'これは Y 軸です' ] ) ;
grid on ; box on ;
T_IMGFRAME = getframe( gcf ) ;
imwrite( T_IMGFRAME.cdata , [ T_IMG_DIR_NAME '\TestImage' num2str(T_CI,'%04d') '.png' ] ) ;
close( fg ) ;
end
%%---------------------------------------------------------------------------
%%---------------------------------------------------------------------------
%%---------------------------------------------------------------------------

댓글을 달려면 로그인하십시오.

답변 (0개)

카테고리

Help CenterFile Exchange에서 印刷と保存에 대해 자세히 알아보기

제품


릴리스

R2019b

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!