String 如何在matlab中替换字符串的一部分
我有一个字符串矩阵,里面填充了如下数据String 如何在matlab中替换字符串的一部分,string,matlab,String,Matlab,我有一个字符串矩阵,里面填充了如下数据 matrix = ['1231231.jpeg','4343.jpeg',...] 我想删除它的文件扩展名并获取 matrix = ['1231231', '4343'] 我怎么做?是否有任何函数或什么:)在matlab中有一个用于此的函数 matlab中有一个函数用于此 用户fileparts,它返回三个变量:文件的路径,名称,和扩展名。所以这应该对你有用 [~, fName, ext] = fileparts(fileName) 用户fil
matrix = ['1231231.jpeg','4343.jpeg',...]
我想删除它的文件扩展名并获取
matrix = ['1231231', '4343']
我怎么做?是否有任何函数或什么:)在matlab中有一个用于此的函数
matlab中有一个函数用于此
用户fileparts,它返回三个变量:文件的
路径
,名称
,和扩展名
。所以这应该对你有用
[~, fName, ext] = fileparts(fileName)
用户fileparts,它返回三个变量:文件的
路径
,名称
,和扩展名
。所以这应该对你有用
[~, fName, ext] = fileparts(fileName)
假设矩阵看起来像
matrix = ['1231231.jpeg';
'4343.jpeg';
....];
(;而不是,)。如果使用“,”,矩阵中的字符将自动合并
您可以使用arrayfun
对矩阵的每个索引执行操作。下面的命令应该可以工作
arrayfun(@(x) matrix(x,1:strfind(a(matrix,:),'.jpeg')-1), str2num(matrix(:,1))', 'UniformOutput' , false)
假设矩阵看起来像
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]=regexp(字符(字符串),'(?\d*)。(?\w*),'names');
使用r[i].dec作为数字值。您可以始终循环使用它们并解析它们,如下所示:
r[i] = regexp(char(string), '(?<dec>\d*).(?<ext>\w*)', 'names');
r[i]=regexp(字符(字符串),'(?\d*)。(?\w*),'names');
使用r[i].dec作为数值。注意:不同长度字符串(垂直)串联的矩阵将不起作用(等长字符串的特殊情况除外)。调用[a;B]时,vertcat将每个字符视为单个矩阵元素。
或者,使用单元格数组和cellfun
(+独立于文件扩展名):
注:不同长度字符串的(垂直)串联矩阵不起作用(等长字符串的特殊情况除外)。调用[a;B]时,vertcat将每个字符视为单个矩阵元素。
或者,使用单元格数组和cellfun
(+独立于文件扩展名):
但是我的案例没有路径,然后忽略输出arg(正如@slayton使用~
所做的那样),但我还需要对矩阵的每个元素执行此操作,并消除每个元素的扩展。我怎么能这样做呢?我的案例没有路径,然后忽略输出arg(正如@slayton使用~
所做的那样),但我还需要对矩阵的每个元素执行此操作,并消除每个元素的扩展。我怎么能这样做呢?有什么建议吗?我的案例没有路径bro那么pathstr将是空的或类似的东西我的案例没有路径bro那么pathstr将是空的或类似的东西arrayfun
在循环中不会给你带来太多性能,因为它在内部使用循环。虽然这种方法“有效”,但一种更具可读性的解决方案是将其作为循环编写,而不使用匿名函数。arrayfun
在循环内部使用循环,因此无法为您带来更多性能。虽然这种方法“有效”,但一种更具可读性的解决方案是将其作为循环编写,而不使用匿名函数。