并行批处理多个文件 matlab
?
%初始化matlab并行運(yùn)行環(huán)境
% Initialize Matlab Parallel Computing Environment
?
CoreNum=2; %設(shè)定機(jī)器CPU核心數(shù)量,我的機(jī)器是雙核,所以CoreNum=2
if matlabpool('size')<=0 %判斷并行計(jì)算環(huán)境是否已然啟動(dòng)
matlabpool('open','local',CoreNum); %若尚未啟動(dòng),則啟動(dòng)并行環(huán)境
else
disp('Already initialized'); %說(shuō)明并行環(huán)境已經(jīng)啟動(dòng)。
end
?
% 運(yùn)行成功后會(huì)出現(xiàn)如下語(yǔ)句:
% Starting matlabpool using the 'local' configuration ... connected to 2 labs.
% 如果運(yùn)行出錯(cuò),按照下面的辦法檢測(cè):
% 首先運(yùn)行:
% matlabpool size
% 如果出錯(cuò),說(shuō)明你沒(méi)有安裝Matlab并行工具箱。確認(rèn)安裝了此工具箱后,運(yùn)行:
% matlabpool open local 2;
% 如果出錯(cuò),證明你的機(jī)器在開(kāi)啟并行計(jì)算時(shí)設(shè)置有問(wèn)題。請(qǐng)聯(lián)系MathWorks的售后服務(wù)。
?
% 終止Matlab并行計(jì)算環(huán)境
% 用上述語(yǔ)句啟動(dòng)Matlab并行計(jì)算環(huán)境的話,在你的內(nèi)存里面有CoreNum個(gè)Matlab進(jìn)程存在,
% 每個(gè)占用內(nèi)存都在百兆以上。(可以用Windows任務(wù)管理器查看),故完成運(yùn)行計(jì)算
% 后可以將其關(guān)閉。關(guān)閉的命令很簡(jiǎn)單:
matlabpool close
?
下面給出一個(gè)具體的示例
clear all;
close all;
clc;
%列出文件清單,文件名具有相同的前綴
p = which('JPCLN001.bmp');?? %Locate functions and files
filelist = dir([fileparts(p) filesep 'JPCLN*.bmp']);
fileNames = {filelist.name}';
?
%查看其中一張圖像
I = imread(fileNames{1});
I = imresize(I,0.25);
imshow(I);
text(size(I,2),size(I,1)+15, ...
??? 'Image files courtesy of Alan Partin', ...
??? 'FontSize',7,'HorizontalAlignment','right');
text(size(I,2),size(I,1)+25, ...
??? 'Johns Hopkins University', ...
??? 'FontSize',7,'HorizontalAlignment','right');
?
% 指定應(yīng)用于每張圖像的圖像處理算法
%生成一個(gè)圖像處理函數(shù),該函數(shù)分割顯微鏡圖像中沒(méi)有挨著的細(xì)胞
segmentedCells = batchDetectCells(I);
figure,imshow(segmentedCells)
該部分換成相應(yīng)的算法即可
?
% 循環(huán)處理多個(gè)圖像
% 函數(shù) batchProcessFiles 使用 parfor 來(lái)單獨(dú)處理每個(gè)圖像。該工作類(lèi)型for循環(huán),
% 但是如果你裝有并行計(jì)算工具箱,就可以充分利用多個(gè)處理器
% 如果你裝有并行計(jì)算工具箱,你可以使用多至4個(gè)工作機(jī)來(lái)分配每個(gè)循環(huán)周期到不同的
% 工作機(jī)。如果你還裝有MATLAB分布式計(jì)算服務(wù)器,你還可以使用一群工作機(jī)運(yùn)行你的
% 批處理任務(wù)
?
%定位工作機(jī)
matlabpool open 4
?
%調(diào)用 batchProcessFiles函數(shù)對(duì)每個(gè)文件實(shí)施探測(cè)計(jì)算
segmentedCellSequence = batchProcessFiles(fileNames,@batchDetectCells);
?
%清理
%如果你調(diào)用 matlabpool 開(kāi)啟一些工作機(jī),記得要將其關(guān)閉
matlabpool close
?
%顯示結(jié)果
%運(yùn)行下面的命令在implay中查看圖像序列
implay(segmentedCellSequence)
?
?
部分內(nèi)容參考 http://blog.sina.com.cn/s/blog_49ea41a20101fodd.html
???????????????????? http://blog.sina.com.cn/s/blog_49ea41a20101fodc.html
?
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
?
matlab對(duì)文件目錄路徑的操作
?
1、 ? ? ? ?filesep 功能說(shuō)明 當(dāng)前平臺(tái)下文件分隔符
參數(shù)解析
f?=?filesep?
返回當(dāng)前平臺(tái)的文件分隔符,該文件分隔符可分隔各級(jí)目錄名和文件名。
用于返回當(dāng)前平臺(tái)的目錄分隔符,Windows是反斜杠(\),Linux是斜杠(/)。
iofun_dir?=?['toolbox'?filesep?'matlab'?filesep?'iofun']????
Windows平臺(tái)下返回:????iofun_dir?=???toolbox\matlab\iofun
Unix平臺(tái)下返回:????iofun_dir?=???toolbox/matlab/iofun
2、 ? ? ? ?fullfile
用于將若干字符串連接成一個(gè)完整的路徑。例如:
>> f=fullfile('D:','Matlab','example.txt')
f=D:\Matlab\example.txt
(在Windows中,“D:\”表示D盤(pán),“D:”表示目錄)
3、 ? ? ? ?fileparts? 功能分離出路徑和文件名
函數(shù)語(yǔ)法
[pathstr,?name,?ext]?=?fileparts(filename)
參數(shù)解析
[pathstr,?name,?ext]?=?fileparts(filename)?
返回指定文件的路徑名pathstr,文件名name,擴(kuò)展名ext。文件filename不一定要存在。filename用單引號(hào)括起來(lái)。擴(kuò)展名ext中包含'.'這個(gè)字符。
用于將一個(gè)完整的文件名分割成4部分:路徑,文件名,擴(kuò)展名,版本號(hào)。例如:
>> f=fullfile('D:','Matlab','example.txt');
>> [pathstr,name,ext,versn]=fileparts(f)
pathstr=D:\Matlab
name=example
ext=.txt
versn=’’
4、 ? ? ? ?pathsep
返回當(dāng)前平臺(tái)的路徑分隔符。Windows是分號(hào)(;),Linux是冒號(hào)(:)。
5、 ? ? ? ?exist
可以用于判斷目錄或者文件是否存在,同時(shí)不同的返回值有不同的含義。例如:
>> f=fullfile('D:','Matlab','example.txt');
>> exist(f)
ans=2
>> exist('D:\Matlab')
ans =7
6、 ? ? ? ?which
可以通過(guò)一個(gè)函數(shù)或腳本名稱(chēng)得到它的完整路徑,同時(shí)還能處理函數(shù)重載的情況,例如:
>> which abs(0)
C:\MATLAB7\toolbox\matlab\elfun\@double\abs.bi ?% double method
>> which abs(single(0))
C:\MATLAB7\toolbox\matlab\elfun\@single\abs.bi ?% single method
7、 ? ? ? ?isdir
判斷一個(gè)路徑是否代表了一個(gè)目錄,例如:
>> p='D:\Matlab';
>> f=fullfile(p,'example.txt');
>> isp=isdir(p)
isp=1
>> isf=isdir(f)
isf=0
8、 ? ? ? ?dir
用于列出一個(gè)目錄的內(nèi)容,返回值為結(jié)構(gòu)體數(shù)組類(lèi)型,包含如下部分:name:文件或目錄的名稱(chēng);date:修改日期;bytes:文件大小;isdir:是否是目錄。例如:
>> p='D:\Matlab';
>> files=dir(p)
files =?
8x1 struct array with fields:
? ?name
? ?date
? ?bytes
? ?isdir
9、 ? ? ? ?cd
用于切換當(dāng)前工作目錄。例如:
>>cd('c:/toolbox/matlab/demos') ? ? ? ?%切換當(dāng)前工作目錄到demos
>> cd .. ? ? ? ?%切換當(dāng)前工作目錄到matlab
10、 ? ? ? ?pwd
用于當(dāng)前工作目錄的路徑。例如:
>> pwd
ans =C:\MATLAB7\work
11、 ? ? ? ?path
用于對(duì)搜索路徑的操作。例如:
<<path ? ? ? ?%查詢(xún)當(dāng)前所有的搜索路徑(MATLABPATH)
<<p=path ? ? ? ? ? ? ? ?%把當(dāng)前的搜索路徑存在字符串變量p中
<<path(‘newpath’) ? ? ? ? ? ? ? ?%將當(dāng)前搜索路徑設(shè)置為newpath
<< path(path,’newpath’) ? ? ? ?%向路徑添加一個(gè)新目錄newpath
<< path(’newpath’, path) ? ? ? ?%向當(dāng)前搜索路徑預(yù)加一個(gè)新目錄nespath
12、 ? ? ? ?addpath和rmpath
用于對(duì)matlab搜索路徑的添加和刪除。例如:
<<addpath(‘directory’) ? ? ? ?%將完整路徑directory加入到當(dāng)前搜索路徑的最頂端
<<rmpath
13、 ? ? ? ?what
用于顯示出某目錄下存在哪些matlab文件;若輸入完整路徑,可列出指定目錄下的文件。例如:
<<what
<< what dirname
<< what(‘dirname’)
其中dirname是要查找的路徑的名字,路徑在matlab的搜索路徑內(nèi)時(shí),沒(méi)有必要輸入全名,只輸入最后或最后兩級(jí)就夠了。
14、 ? ? ? ?path2rc
保存當(dāng)前matlab的搜索路徑到pathdef.m文件中。
本文章來(lái)自:http://blog.sina.com.cn/s/blog_49ea41a20101fobo.html
總結(jié)
以上是生活随笔為你收集整理的并行批处理多个文件 matlab的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 哪种信用卡不激活也收费?不激活会有什么影
- 下一篇: .mat,.txt,.csv 数据转换为