我有一个字符串矩阵,里面填充了像
这样的数据matrix = ['1231231.jpeg','4343.jpeg',...]
我想删除其文件扩展名并获取
matrix = ['1231231', '4343']
我该怎么办?是否有任何功能或什么:)
答案 0 :(得分:3)
用户fileparts,它返回文件的path
,name
和extension
三个变量。所以这应该对你有用
[~, fName, ext] = fileparts(fileName)
答案 1 :(得分:1)
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
答案 2 :(得分:1)
假设矩阵看起来像
matrix = ['1231231.jpeg';
'4343.jpeg';
....];
(;而不是,)。如果使用',',则矩阵中的字符会自动进行分页。
您可以使用arrayfun
对矩阵的每个索引执行操作。以下命令应该起作用
arrayfun(@(x) matrix(x,1:strfind(a(matrix,:),'.jpeg')-1), str2num(matrix(:,1))', 'UniformOutput' , false)
答案 3 :(得分:1)
你总是可以循环遍历它们并解析它们:
r[i] = regexp(char(string), '(?<dec>\d*).(?<ext>\w*)', 'names');
使用r [i] .dec作为数值。
答案 4 :(得分:1)
注意:来自(垂直)串联不同长度的字符串的矩阵将不起作用(除了等长字符串的特殊情况)。在调用vertcat
[A;B].
视为单个矩阵元素
替代方案,使用单元格数组和cellfun
(+独立于文件扩展名):
matrix = {'1231231.jpeg','4343.jpeg'};
matrix_name = cellfun(@(x) x(1:find(x == '.', 1, 'last')-1), matrix, 'UniformOutput', false);