替換字符串的一部分,我有數據填充像如何在MATLAB
matrix = ['1231231.jpeg','4343.jpeg',...]
字符串矩陣,我想刪除它的文件擴展名並獲得
matrix = ['1231231', '4343']
我該怎麼辦它?沒有任何功能或什麼:)
替換字符串的一部分,我有數據填充像如何在MATLAB
matrix = ['1231231.jpeg','4343.jpeg',...]
字符串矩陣,我想刪除它的文件擴展名並獲得
matrix = ['1231231', '4343']
我該怎麼辦它?沒有任何功能或什麼:)
假設矩陣看起來像
matrix = ['1231231.jpeg';
'4343.jpeg';
....];
(;代替)。如果使用',',則矩陣中的字符會自動串聯。可以使用arrayfun
對矩陣的每個索引執行操作。下面的命令應該工作
arrayfun(@(x) matrix(x,1:strfind(a(matrix,:),'.jpeg')-1), str2num(matrix(:,1))', 'UniformOutput' , false)
有一個函數這在MATLAB
http://www.mathworks.com/help/techdoc/ref/fileparts.html
file = 'H:\user4\matlab\classpath.txt';
[pathstr, name, ext] = fileparts(file)
pathstr =
H:\user4\matlab
name =
classpath
ext =
.txt
存在用於我的情況 – 2012-08-13 20:27:41
沒有路徑BRO則pathstr將是空的或類似的東西 – Gir 2012-08-13 22:20:32
用戶fileparts,它返回三個變量path
,name
,以及文件的extension
。因此,這應該爲你工作
[~, fName, ext] = fileparts(fileName)
但我的情況沒有路徑 – 2012-08-13 20:27:14
然後忽略輸出arg(@slayton通過使用'〜'做的) – tmpearce 2012-08-13 20:34:28
,但我也需要做到矩陣的每個元素,並消除每個元素的擴展名。我怎麼能這樣做呢? – 2012-08-13 20:36:46
你總是可以遍歷他們,解析他們喜歡:
r[i] = regexp(char(string), '(?<dec>\d*).(?<ext>\w*)', 'names');
使用[R [I] .dec的數值。
注意:不同長度的字符串(垂直)串聯後的矩陣將不起作用(除了等長字符串的特殊情況外)。每個字符由vertcat
調用[A;B].
替代時視爲一個單一的矩陣元素,使用細胞陣列和cellfun
(+文件擴展名的獨立的):
matrix = {'1231231.jpeg','4343.jpeg'};
matrix_name = cellfun(@(x) x(1:find(x == '.', 1, 'last')-1), matrix, 'UniformOutput', false);
'arrayfun'在內部使用循環時不會在循環中獲得太多的性能。雖然這個「有效」,但更可讀的解決方案是將其簡單地寫成沒有匿名函數的循環。 – slayton 2012-08-14 02:36:01