2015-05-29 30 views
1

我在MATLAB中遇到了一些數據處理函數的問題。該函數將要處理的文件的名稱作爲輸入,查找所需文件並讀入數據。將用戶輸入存儲爲通配符

但是,一些所需的文件是變體,例如Data_00.dat,Data.dat或Data_1_March.dat。在我的功能中,我想搜索包含數據的所有文件,並將它們壓縮成一個可用文件進行處理。

爲了解決這個問題,我想把desiredfile轉換成通配符。

以下是我希望使用的聲明。

selectedfiles = dir *desiredfile*.dat % Search for file names containing desiredfile 

這將返回包含變量名desiredfile而不是用戶輸入的所有文件。

我能想到的唯一解決方案是編寫一個單獨的函數,在我的函數運行之前手動將所有變體壓縮到一個文件中,但我試圖保持使用的文件數量並希望避免這種情況。

回答

0

我相信你可以通過使用dir命令來實現。

dataSets = dir('/path/to/dir/containing/Data*.dat'); 
dataSets = {dataSets.name}; 

現在簡單地遍歷它們,更多信息here

引述幫助:

目錄列出了MATLAB®當前文件夾中的文件和文件夾。結果按操作系統返回的順序顯示。

dir名稱列出與字符串名稱匹配的文件和文件夾。當名稱是文件夾時,dir會列出文件夾的內容。使用絕對或相對路徑名稱指定名稱。你可以使用通配符(*)。

1

你可以連接字符串。考慮將desiredFile作爲變量。

desiredFile = input('Files: '); 
selectedfiles = dir(['*' desiredfile '*.dat']) % Search for file names containing desiredfile 

方括號[string1 string2 ... stringN]之間內附字符串連接它們。 Matlab的dir函數接收一個字符串。