?
%初始化matlab并行運行環境
% Initialize Matlab Parallel Computing Environment
?
CoreNum=2; %設定機器CPU核心數量,我的機器是雙核,所以CoreNum=2
if matlabpool('size')<=0 %判斷并行計算環境是否已然啟動
matlabpool('open','local',CoreNum); %若尚未啟動,則啟動并行環境
else
disp('Already initialized'); %說明并行環境已經啟動。
end
?
% 運行成功后會出現如下語句:
% Starting matlabpool using the 'local' configuration ... connected to 2 labs.
% 如果運行出錯,按照下面的辦法檢測:
% 首先運行:
% matlabpool size
% 如果出錯,說明你沒有安裝Matlab并行工具箱。確認安裝了此工具箱后,運行:
% matlabpool open local 2;
% 如果出錯,證明你的機器在開啟并行計算時設置有問題。請聯系MathWorks的售后服務。
?
% 終止Matlab并行計算環境
% 用上述語句啟動Matlab并行計算環境的話,在你的內存里面有CoreNum個Matlab進程存在,
% 每個占用內存都在百兆以上。(可以用Windows任務管理器查看),故完成運行計算
% 后可以將其關閉。關閉的命令很簡單:
matlabpool close
?
下面給出一個具體的示例
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');
?
% 指定應用于每張圖像的圖像處理算法
%生成一個圖像處理函數,該函數分割顯微鏡圖像中沒有挨著的細胞
segmentedCells = batchDetectCells(I);
figure,imshow(segmentedCells)
該部分換成相應的算法即可
?
% 循環處理多個圖像
% 函數 batchProcessFiles 使用 parfor 來單獨處理每個圖像。該工作類型for循環,
% 但是如果你裝有并行計算工具箱,就可以充分利用多個處理器
% 如果你裝有并行計算工具箱,你可以使用多至4個工作機來分配每個循環周期到不同的
% 工作機。如果你還裝有MATLAB分布式計算服務器,你還可以使用一群工作機運行你的
% 批處理任務
?
%定位工作機
matlabpool open 4
?
%調用 batchProcessFiles函數對每個文件實施探測計算
segmentedCellSequence = batchProcessFiles(fileNames,@batchDetectCells);
?
%清理
%如果你調用 matlabpool 開啟一些工作機,記得要將其關閉
matlabpool close
?
%顯示結果
%運行下面的命令在implay中查看圖像序列
implay(segmentedCellSequence)
?
?
部分內容參考 http://blog.sina.com.cn/s/blog_49ea41a20101fodd.html
???????????????????? http://blog.sina.com.cn/s/blog_49ea41a20101fodc.html
?
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
?
matlab對文件目錄路徑的操作
?
1、 ? ? ? ?filesep 功能說明 當前平臺下文件分隔符
參數解析
f?=?filesep?
返回當前平臺的文件分隔符,該文件分隔符可分隔各級目錄名和文件名。
用于返回當前平臺的目錄分隔符,Windows是反斜杠(\),Linux是斜杠(/)。
iofun_dir?=?['toolbox'?filesep?'matlab'?filesep?'iofun']????
Windows平臺下返回:????iofun_dir?=???toolbox\matlab\iofun
Unix平臺下返回:????iofun_dir?=???toolbox/matlab/iofun
2、 ? ? ? ?fullfile
用于將若干字符串連接成一個完整的路徑。例如:
>> f=fullfile('D:','Matlab','example.txt')
f=D:\Matlab\example.txt
(在Windows中,“D:\”表示D盤,“D:”表示目錄)
3、 ? ? ? ?fileparts? 功能分離出路徑和文件名
函數語法
[pathstr,?name,?ext]?=?fileparts(filename)
參數解析
[pathstr,?name,?ext]?=?fileparts(filename)?
返回指定文件的路徑名pathstr,文件名name,擴展名ext。文件filename不一定要存在。filename用單引號括起來。擴展名ext中包含'.'這個字符。
用于將一個完整的文件名分割成4部分:路徑,文件名,擴展名,版本號。例如:
>> f=fullfile('D:','Matlab','example.txt');
>> [pathstr,name,ext,versn]=fileparts(f)
pathstr=D:\Matlab
name=example
ext=.txt
versn=’’
4、 ? ? ? ?pathsep
返回當前平臺的路徑分隔符。Windows是分號(;),Linux是冒號(:)。
5、 ? ? ? ?exist
可以用于判斷目錄或者文件是否存在,同時不同的返回值有不同的含義。例如:
>> f=fullfile('D:','Matlab','example.txt');
>> exist(f)
ans=2
>> exist('D:\Matlab')
ans =7
6、 ? ? ? ?which
可以通過一個函數或腳本名稱得到它的完整路徑,同時還能處理函數重載的情況,例如:
>> 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
判斷一個路徑是否代表了一個目錄,例如:
>> p='D:\Matlab';
>> f=fullfile(p,'example.txt');
>> isp=isdir(p)
isp=1
>> isf=isdir(f)
isf=0
8、 ? ? ? ?dir
用于列出一個目錄的內容,返回值為結構體數組類型,包含如下部分:name:文件或目錄的名稱;date:修改日期;bytes:文件大小;isdir:是否是目錄。例如:
>> p='D:\Matlab';
>> files=dir(p)
files =?
8x1 struct array with fields:
? ?name
? ?date
? ?bytes
? ?isdir
9、 ? ? ? ?cd
用于切換當前工作目錄。例如:
>>cd('c:/toolbox/matlab/demos') ? ? ? ?%切換當前工作目錄到demos
>> cd .. ? ? ? ?%切換當前工作目錄到matlab
10、 ? ? ? ?pwd
用于當前工作目錄的路徑。例如:
>> pwd
ans =C:\MATLAB7\work
11、 ? ? ? ?path
用于對搜索路徑的操作。例如:
<<path ? ? ? ?%查詢當前所有的搜索路徑(MATLABPATH)
<<p=path ? ? ? ? ? ? ? ?%把當前的搜索路徑存在字符串變量p中
<<path(‘newpath’) ? ? ? ? ? ? ? ?%將當前搜索路徑設置為newpath
<< path(path,’newpath’) ? ? ? ?%向路徑添加一個新目錄newpath
<< path(’newpath’, path) ? ? ? ?%向當前搜索路徑預加一個新目錄nespath
12、 ? ? ? ?addpath和rmpath
用于對matlab搜索路徑的添加和刪除。例如:
<<addpath(‘directory’) ? ? ? ?%將完整路徑directory加入到當前搜索路徑的最頂端
<<rmpath
13、 ? ? ? ?what
用于顯示出某目錄下存在哪些matlab文件;若輸入完整路徑,可列出指定目錄下的文件。例如:
<<what
<< what dirname
<< what(‘dirname’)
其中dirname是要查找的路徑的名字,路徑在matlab的搜索路徑內時,沒有必要輸入全名,只輸入最后或最后兩級就夠了。
14、 ? ? ? ?path2rc
保存當前matlab的搜索路徑到pathdef.m文件中。
本文章來自:http://blog.sina.com.cn/s/blog_49ea41a20101fobo.html