5.並列計算(parfor)※要Parallel Computing Toolbox
※どうしてもparforループ内でダイレクトにjpgに落とすことができない・・

%---------------------------------------------------------
% parforループで並列処理
%---------------------------------------------------------
parpool(6); % ←ワーカーの数を指定
parfor
k=1:length(fl); %<-----変数"fl"にファイルリストが入っているとする
 :
 :
[parforループ内である変数X,Y,Zを計算したとする]
[m_mapでマッピングしたとする]
 :
 :
saveas(gcf, '*****.fig', 'fig');% ←マッピングした図をfig形式で保存
parsave(ofl,X,Y,Z); % ←以下に示す新規の関数parsaveを用意しておく

 :
 :
end
delete(gcp); % matlabpoolにさよなら


=======なぜか別プログラムにしないと動かない・・・・==============

%---------------------------------------------------------
% fig形式からjpgへ変換
%---------------------------------------------------------

for k=1:length(fl)
hoge=fileList{k}; oflj=[hoge(1:26),'.jpg']; oflf=[hoge(1:26),'.fig'];
 uiopen(oflf,1); % <---------parfor ループで作った*.figファイルを開く
 print('-djpeg','-r200',oflj);% <------jpg形式で保存
 delete oflf; % <------figファイルを削除
close all;
end

ちなみにparforループ内で図をjpeg等へ変換・保存しようとすると、とんでもない低解像度で出力される。
このサイトによるとワーカーは"-noFigureWindows"オプションで動くだからということ。バグではないらしい。
現時点でもサポートされていない模様。jpg保存は地道にやりなさいってことだ。


以下のスクリプトを適切なところに置いておき、パスを通しておけばよい。例は3変数を保存する場合。
〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜ここから
function parsave(fname,x,y,z)
save(fname,'x','y','z')
end
〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜ここまで