我有一个字符串矩阵,里面充满了类似的数据
matrix = ['1231231.jpeg','4343.jpeg',...]
我想删除它的文件扩展名并得到
matrix = ['1231231', '4343']
我该怎么做?有什么功能或什么:)
用户文件部分,它返回文件的path
、name
和三个变量extension
。所以这应该适合你
[~, fName, ext] = fileparts(fileName)
在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
假设矩阵看起来像
matrix = ['1231231.jpeg';
'4343.jpeg';
....];
(; 代替 ,)。如果使用 ',',矩阵中的字符会自动连接。
您可以使用arrayfun
对矩阵的每个索引执行操作。以下命令应该可以工作
arrayfun(@(x) matrix(x,1:strfind(a(matrix,:),'.jpeg')-1), str2num(matrix(:,1))', 'UniformOutput' , false)
您总是可以遍历它们并像这样解析它们:
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);