2011-11-23 52 views
0

在一個文件夾中,我有我的.m文件包含腳本和一個成像.dcm文件,這是我的分析目標。有沒有獲得文件名並插入Matlab腳本的方法?

文件夾結構:

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它會當的方法:

  • 自動搜索它所在的文件夾,

  • 搶包含字符串dynamic在名稱文件的文件名,

  • 插入其名稱target變量

  • 繼續運行該腳本

有沒有人對如何任何指針爲了達成這個?使用ffpath

回答

1

你應該做的:

f=dir('*dynamic*'); 
target=f(1).name; 
+0

這工作在命令行上,但是當我把它放在腳本中時,我得到一個錯誤'功能沒有被定義爲'結構'inputs.' – pepe

+0

現在,它是否適用於新的編輯? – Oli

+0

這是因爲你只需要從'dir'返回的結構中提取文件名。嘗試'txt = dir('* dynamic *');''txt = {txt.name};' – Doresoom

1

假設你是不是在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它將是包含關鍵字的文件名「動態單元陣列」。

+0

thx將保持完整路徑,但現在使用更簡單的方法@ OLI – pepe

0

而不是which(scriptname),考慮使用mfilename('fullpath'),這將直接爲您提供正在運行的m文件的完整路徑。如果在路徑上有多個相同名稱的命令,則使用which可能會中斷。

相關問題