将用户输入存储为通配符

时间:2015-05-29 20:10:04

标签: matlab wildcard file-processing

我在MATLAB中遇到了一些数据处理功能的问题。该函数将要处理的文件的名称作为输入,查找所需的文件,并读入数据。

但是,一些所需的文件是变体,例如Data_00.dat,Data.dat或Data_1_March.dat。在我的函数中,我想搜索包含Data的所有文件,并将它们压缩成一个可用的文件进行处理。

要解决这个问题,我希望将所需的文件转换为通配符。

以下是我想要使用的陈述。

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

这将返回包含变量名称desiredfile的所有文件,而不是用户输入。

我能想到的唯一解决方案是编写一个单独的函数,在我的函数运行之前手动将所有变量压缩到一个文件中,但我试图保持使用的文件数量,并希望避免这种情况。

2 个答案:

答案 0 :(得分:1)

您可以为此连接字符串。将desiredFile视为变量。

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

将方括号[string1 string2 ... stringN]之间的字符串连接起来。 Matlab的dir函数接收一个字符串。

答案 1 :(得分:0)

我相信你可以使用dir命令实现这一目标。

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

现在只需循环遍历它们,更多信息here

引用帮助:

  

dir列出MATLAB®当前文件夹中的文件和文件夹。结果显示在操作系统返回的顺序中。

     

dir name列出与字符串名称匹配的文件和文件夹。当name是文件夹时,dir会列出文件夹的内容。使用绝对路径名或相对路径名指定名称。您可以使用通配符(*)。