Это зависит от того, как исправлено ваше имя файла. Если имя файла в строке filename
, то вы можете использовать regexp
для извлечения части вашего файла, например, так:
filename = 'Ev_An_OM2_l5_5000.txt'; %or whatever
parts = regexp(filename,'[^_]+_[^_]+_([^_]+)_[^_]+_([^\.]+)\.txt','tokens');
Это даст вам parts{1}=='OM2'
и parts{2}=='5000'
, при условии, что ваш filename
всегда в форме
something_something_somethingofinterest_something_somethingofinterest.txt
Update:
Если вы любите больше, чем Структуры клеток, то вы можете назвать свои фишки так:
parts = regexp(filename,'[^_]+_[^_]+_(?<first>[^_]+)_[^_]+_(?<second>[^\.]+)\.txt','names');
В этом случае parts.first=='OM2'
и parts.second=='5000'
. Вы можете, очевидно, называть свои токены в соответствии с их фактическим значением, поскольку они важны. Вам просто нужно изменить first
и second
соответственно в коде выше.
Update2:
Если вы используете dir
, чтобы получить ваши имена файлов, вы должны иметь массив структуры с нагрузками ненужной информации. Если вам действительно нужно просто имена файлов, я хотел бы использовать для цикла следующим образом:
files = dir('Ev_An*.txt');
for i=1:length(files)
filename=files(i).name;
parts = regexp(filename,'[^_]+_[^_]+_(?<first>[^_]+)_[^_]+_(?<second>[^\.]+)\.txt','tokens');
%here do what you want with parts.first, parts.second and the file itself
end
Как вы строите имя файла, в первую очередь, для использования в 'fopen'? Зачем вам нужно перепроектировать? –
Добавлено изменение, чтобы объяснить это. – AnnaSchumann
Вы неправильно поняли мой вопрос. Как вы можете сказать 'matlab', чтобы открыть' 'Ev_An_OM2_l5_5000.txt'', а не что-то еще? Как вы создаете это имя? У вас есть база данных с именами файлов? –