在Matlab中的几个文件上运行一个函数

时间:2011-07-04 02:14:28

标签: matlab

  

可能重复:
  how to run the same code with many files(different file name in same directory) in matlab?

我写了一个定义函数:

function deleteEmpty(fileName)

通常当我想执行该功能时,在命令窗口中输入:

>> deleteEmpty('C:\Documents and Settings\matlab\**myFile**.xls')

但是,我有许多文件需要通过此功能运行。这是否意味着我需要复制并粘贴文件名并每次都执行该功能?

有没有更快的方法或代码来处理我的所有文件?

3 个答案:

答案 0 :(得分:1)

这是一个方便的解决方案,可以在多个文件上调用您的函数:

%# build a list of file names with absolute path
fPath = uigetdir('.', 'Select directory containing XLS files');
if fPath==0, error('no folder selected'), end
fNames = dir( fullfile(fPath,'*.xls') );
fNames = strcat(fPath, filesep, {fNames.name});

%# process each file
for i=1:length(fNames)
    out = deleteEmpty(fNames{i});
end

答案 1 :(得分:0)

执行此操作的典型方法是创建一个包装函数(或脚本),它将访问xls文件中的文件名,并遍历每个文件名,为每个文件名运行deleteEmpty

特别参见xlsread

答案 2 :(得分:0)

%Create the paths to each file as a cell array
path = {'c:', 'Documents and Settings', 'matlab'};
fileNames = {'foo.xls', 'bar.xls', 'baz.xls', 'quux.xls'};
fullFileNames = cellfun(@(f) fullfile(path{:}, f), fileNames, 'UniformOutput', false);

% Loop over files, calling deleteEmpty for each. 
cellfun(@deleteEmpty, fileNames);