參考:
在對資料夾進行操作的時候,有時候我們不免要對路徑進行分割,已提取具體某一段的路徑字串。
在這裡有2中方法,以下分別介紹。
1)借助正規表示式函式regexp的split模式。
其基本語法為:
s = regexp(str, char, 『split』),str為要進行分割的字串,char指明以何種字串進行分割,字串split就表示split模式。
值得注意的是,分割之後的結果是乙個cell陣列。也就是說結果的每個單元都是cell型別,所以如果要輸出某單元字串時,還需要對要使用的單元進行強制轉換。是**的結果。
以下的**要實現的需求是,提取出路徑的最後一部分的字串,然後以備後續功能的使用
datasetcur = 'remote/result_4_bicu_2_ori'
res = regexp(datasetcur , '/', 'split');
str1 = char(str1(end)); % str1 = 'result_4_bicu_2_ori'
2)直接使用字串分割函式strsplit。
其基本語法為 str = strsplit(str,char);預設按照空白字元分割。
實現1)中相同的目的的**如下:
datasetcur = 'remote/result_4_bicu_2_ori'
an = strsplit(datasetcur,'/');
str2 = char(an(end)); % str2 = 'result_4_bicu_2_ori'
既然有路徑的分割就有路徑的合成。這裡也稍微提一下我所看到的路徑合成的方法。
比如我要讀取上面資料夾下的影象:img_100_srf_4_lr.png,而這個資料夾所有的檔案格式都是img_***_srf_4_lr.png。「***」表示影象的編號,如果我們使用for迴圈來一張一張的讀取影象並處理,**如下:
for imgid = 1:numofimages
imgname = ['img_', num2str(imgid, '%03d'), '_srf_4_lr.png'];
img = imread(imgname);
... % 你要進行的操作
end
這裡再補充一下,使用「」合成路徑,是不帶有檔案分隔符』/』的,之所以講這個小區別,是因為fullfile函式會自動填補上檔案分割符。這一點也決定了2者使用環境下的不同。這裡如果是合成路徑就使用fullfile函式,比較方便,如要合成』data/my/result』的目標路徑。而要是訪問資料夾內的影象之類的,由於不需要檔案分隔符,所以使用比較方便
path = fullfile('data','my','result') % path = 'data\my\result';
str = ['data','my','result']; % str = 'datamyresult'
Matlab對路徑的操作
一 matlab對路徑的操作 1 filesep 用於返回當前平台的目錄分隔符,windows是反斜槓 linux是斜槓 2 fullfile 用於將若干字串連線成乙個完整的路徑。例如 f fullfile d matlab example.txt f d matlab example.txt 在w...
MATLAB字串陣列
4.1 字串陣列 4.1.1 字串入門 例 4.1.1 1 先請讀者實際操作本例,以體會數值量與字串的區別。clear 清除所有記憶體變數 a 12345.6789 給變數 a 賦數值標量 class a 對變數 a 的類別進行判斷 a s size a 數值陣列 a 的 大小 a 1.2346e ...
matlab字串處理
matlab字串處理 字串處理 a a b b b c cccc m 獲取字串長度 length a 連線兩個字串,每個字串最右邊的空格被裁切 d strcat a,c length d 連線多行字串,每行長度可不等,自動把非最長字串最右邊補空格 使與最長字串相等,會忽略空字串 e strvcat ...