1

我有一个字符串矩阵,里面充满了类似的数据

matrix = ['1231231.jpeg','4343.jpeg',...]

我想删除它的文件扩展名并得到

matrix  = ['1231231', '4343']

我该怎么做?有什么功能或什么:)

4

5 回答 5

3

用户文件部分,它返回文件的pathname和三个变量extension。所以这应该适合你

[~, fName, ext] = fileparts(fileName)
于 2012-08-13T20:24:37.530 回答
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
于 2012-08-13T20:23:18.730 回答
1

假设矩阵看起来像

 matrix = ['1231231.jpeg';
           '4343.jpeg';
            ....];

(; 代替 ,)。如果使用 ',',矩阵中的字符会自动连接。

您可以使用arrayfun对矩阵的每个索引执行操作。以下命令应该可以工作

arrayfun(@(x) matrix(x,1:strfind(a(matrix,:),'.jpeg')-1), str2num(matrix(:,1))', 'UniformOutput' , false)
于 2012-08-13T20:45:11.493 回答
1

您总是可以遍历它们并像这样解析它们:

r[i] = regexp(char(string), '(?<dec>\d*).(?<ext>\w*)', 'names');

使用 r[i].dec 作为数值。

于 2012-08-13T20:57:21.180 回答
1

注意:来自(垂直)不同长度字符串串联的矩阵将不起作用(等长字符串的特殊情况除外)。vertcat调用时,每个字符都被视为单个矩阵元素[A;B].

或者,使用元胞数组和cellfun(+独立于文件扩展名):

matrix = {'1231231.jpeg','4343.jpeg'};
matrix_name = cellfun(@(x) x(1:find(x == '.', 1, 'last')-1), matrix, 'UniformOutput', false);
于 2012-08-13T22:39:25.540 回答