Есть ли способ получить имя файла и вставить в скрипт Matlab? - PullRequest
0 голосов
/ 23 ноября 2011

В папке у меня есть и мой .m файл, содержащий сценарий, и один файл .dcm формирования изображений, который является целью моего анализа.

Структура папок:

Folder1/analysis.m
Folder1/meas_dynamic_123.dcm
Folder1/meas_123.dcm
Folder1/meas_345.dcm

Мой сценарий (analysis.m) начинается следующим образом:

target     =''; <== here should go only the filename that contains 'dynamic'
                    example: meas_dynamic_123.dcm

txt        = dir(target);

// etc

Так что мне интересно, есть ли способ запуска analysis.m: 1011 *

  • автоматически ищет папку, в которой он находится,

  • захватывает имя файла, содержащего строку dynamic в имени,

  • вставить свое имя в target переменную

  • продолжить выполнение скрипта

У кого-нибудь есть указания, как этого добиться? Использование ffpath?

Ответы [ 3 ]

1 голос
/ 23 ноября 2011

Предположим, вы не в Folder1, и вам нужно его найти:

script_name = 'analysis';
script_full_path = which(script_name);      % get full path of the script
script_dir = fileparts( script_full_path ); % get the directory of the script
file_list = dir( [script_dir '/*dynamic*']);
name_list = {file_list.name};

name_list будет массивом ячеек, содержащим имена файлов с ключевым словом «dynamic».

1 голос
/ 23 ноября 2011

вы должны сделать:

f=dir('*dynamic*');
target=f(1).name;
0 голосов
/ 24 ноября 2011

Вместо which(scriptname) рассмотрите возможность использования mfilename('fullpath'), которая напрямую даст вам полный путь к запущенному m-файлу. Использование which может прерваться, если на пути было несколько команд с одним и тем же именем.

...