I'm not sure why what I wrote isn't working in terms of extracting the string I want.
2 次查看(过去 30 天)
显示 更早的评论
I have:
filename = Synch_ab001.mat;
underscore_indices = strfind(filename, '-');
period_indices = strfind(filename, '.');
SubjectName = strtok(filename(underscore_indices(end)+1:period_indices(end)-1));
I wrote this to extract just the ab001 as SubjectName, but I keep getting a "subscript indices must either be real positive integers or logicals."
1 个评论
Walter Roberson
2018-6-24
Please do not close questions that have an answer. If you are satisfied with one of the solutions offered, Accept that answer.
采纳的回答
Paolo
2018-6-24
filename = 'Synch_ab001.mat';
subjectname = regexp(filename,'(?<=_)(.*)(?=\.\w*)','match')
0 个评论
更多回答(2 个)
Image Analyst
2018-6-24
First of all filename is not a string. That should have thrown an error right away. Even if it were a string, you're looking for dashes and there are no dashes in the name. Try looking for underscores:
filename = 'Synch_ab001.mat';
underscore_indices = strfind(filename, '_')
period_indices = strfind(filename, '.')
SubjectName = strtok(filename(underscore_indices(end)+1:period_indices(end)-1))
0 个评论
Walter Roberson
2018-6-24
filename = 'Synch_ab001.mat';
temp = regexp(filename, '[_.]', 'split');
subjectname = temp{2};
0 个评论
另请参阅
类别
在 Help Center 和 File Exchange 中查找有关 Logical 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!