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

1 view (last 30 days)
Kazutoshi Ishioka
Kazutoshi Ishioka on 22 Oct 2020
Commented: Kazutoshi Ishioka on 22 Oct 2020
お世話になります
並列forループを用いた場合に、figureの見た目が変わってしまうのを解決したいです。
【内容】
figureをプロットして、以下のコードでファイルに保存しております
>> T_IMGFRAME = getframe( gcf ) ;
>> imwrite( T_IMGFRAME.cdata , T_FILE_NAME ) ;
通常に保存した場合と、並列forループ内で保存した場合で、同じコードで生成したfigureなのに画像に違いがあります
通常で保存した画像に比べて、並列処理内で保存した画像は、ラベル等の文字が小さくプロットした線も細いです
並列処理でも通常で保存した場合と同じ画像で保存できるでしょうか?
【参考画像】
よろしくお願い致します
  1 Comment
Kazutoshi Ishioka
Kazutoshi Ishioka on 22 Oct 2020
%% サンプルコードです
%%---------------------------------------------------------------------------
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
%%---------------------------------------------------------------------------
%%---------------------------------------------------------------------------
%%---------------------------------------------------------------------------

Sign in to comment.

Answers (0)

Categories

Find more on 印刷と保存 in Help Center and File Exchange

Products


Release

R2019b

Community Treasure Hunt

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

Start Hunting!