I'm not sure why what I wrote isn't working in terms of extracting the string I want.

1 回表示 (過去 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
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
Paolo 2018 年 6 月 24 日
filename = 'Synch_ab001.mat';
subjectname = regexp(filename,'(?<=_)(.*)(?=\.\w*)','match')

その他の回答 (2 件)

Image Analyst
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))

Walter Roberson
Walter Roberson 2018 年 6 月 24 日
filename = 'Synch_ab001.mat';
temp = regexp(filename, '[_.]', 'split');
subjectname = temp{2};

カテゴリ

Help Center および File ExchangeCharacters and Strings についてさらに検索

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by